刚开始使用Rails,弄清楚如何访问模型中的方法。
在控制器中我尝试下面的内容:
@testString = Work.testMethod
class Work < ActiveRecord::Base<br>
def testMethod
return "string from test method"
end
end
这导致'WorksController #index'中的NoMethodError(未定义方法)。 我将不胜感激。
并且..当脚手架'工作'时,为什么rails会在控制器名称附加's'?型号名称为Work,控制器为:works_controller
答案 0 :(得分:0)
使用self
:
class Work < ActiveRecord::Base
MY_MESSAGE = "ALL THE BEST"
def self.testMethod
return "string from test method"
end
end
self
用于调用类级方法。现在你可以在下面任何地方调用它:
Work.testMethod #=> "string from test method"
Work::MY_MESSAGE #=> "ALL THE BEST"
如果使用instance_level
方法,则需要创建class
的实例,然后可以在对象上调用方法。但是当您想要创建新记录时会创建模型实例,因此当您不想创建记录时,我更喜欢使用self
方法。
如果你有记录,你可以调用:
class Work < ActiveRecord::Base
def testMethod
return "string from test method"
end
end
work_record = Work.find(your_condition)
work_record.testMethod
答案 1 :(得分:0)
您所谈论的概念是引入class
方法。需要在Work
类本身的self
关键字的帮助下定义该方法。
可以按照以下方式完成:
class Work < ActiveRecord::Base
def self.testMethod
return "string from test method"
end
end
为了回答你的第二个问题,Rails是一个自以为是的框架,强制使控制器和表名复数化的模式。这实际上是为了更加语法正确。
如果您想调整复数,可以使用Inflections来完成。