2013-02-17 77 views
0

刚开始使用Rails时,弄清楚如何访问我的模型中的方法。从模型中访问控制器的方法

在控制器我尝试的follwoing: @testString = Work.testMethod

class Work < ActiveRecord::Base<br> 
    def testMethod 
    return "string from test method" 
    end 
end 

这导致 '在WorksController#指数NoMethodError'(未定义的方法)。 我希望得到一些帮助。

And ..为什么在脚手架'工作'的时候,rails为's'添加控制器名称?型号名称是工作和控制器是:works_controller

回答

0

您正在交谈的概念引入class方法。该方法需要在关键字的帮助下自定义Work类。

class Work < ActiveRecord::Base 
    def self.testMethod 
    return "string from test method" 
    end 
end 

要回答你的第二个问题,Rails的是一个固执己见框架,迫使复数化您的控制器和表名的模式:

它可以如下完成。这真的是为了更正确的语法。

如果你想调整复数,你可以通过使用Inflections来实现。

0

使用self

class Work < ActiveRecord::Base 
    MY_MESSAGE = "ALL THE BEST" 

    def self.testMethod 
    return "string from test method" 
    end 
end 

self用于调用一流水平的方法。如果您使用instance_level方法,你需要创建的class实例,那么你可以调用方法的对象

Work.testMethod #=> "string from test method" 
Work::MY_MESSAGE #=> "ALL THE BEST" 

:现在你可以在任何地方调用它的下面。但是当你想创建新记录时创建模型实例,所以当你不想创建记录时,我更喜欢使用self方法。

如果有记录,你可以调用:

class Work < ActiveRecord::Base 
    def testMethod 
    return "string from test method" 
    end 
end 

work_record = Work.find(your_condition) 
work_record.testMethod 
+0

thx,这个工程很简单。这是如何与模型中声明的变量一起工作的?从控制器访问他们我的意思是。 – 2013-02-17 16:10:57

+0

你的意思是'常量'变量? – codeit 2013-02-17 16:14:59

+0

基于上面的例子,我能够访问我的模型中的方法,thx!关于这个变量,我的意思是一个对模型来说是本地的变量。通过模型中的方法进行操作。 – 2013-02-17 20:13:52

相关问题