我正在开发一个rails应用程序,我希望我的所有对象都有一个处理它们的方法。现在,虽然我意识到我可以在每个对象的模型中编写该方法,但我宁愿坚持使用DRY(不要重复自己)理论并将方法放在一个地方。
我可以放置一个方法,让我的所有对象都可以访问吗?
答案 0 :(得分:3)
Ruby和rails提供了许多选项,具体取决于您希望访问方法的对象。
ChiuBaka的答案是一个选项,但是rails特别提供了许多更具可读性的选项。
如果您正在寻找控制器/视图级别的内容。您只需将其放在app/helpers/application_helper.rb
文件中即可。如果要限制访问,可以在同一目录中创建特定于控制器的帮助程序文件。
如果你正在看模特。您只需创建一个继承自activerecord::base
的基础模型,在那里实现您的方法,然后让您的模型继承该模型。
class MyBase < ActiveModel::Base
def myinstancemethod
end
def myclassmethod
end
end
然后
class MyModel < MyBase
end
然后你可以这样打电话
instance = MyModel.new
instance.myinstancemethod
或
MyModel.myclassmethod
答案 1 :(得分:0)
将您想要的所有模型中的代码放在/ lib文件夹中的模块中,并在模型中使用它。