我正在开发一个 Rails 应用程序,我希望我的所有对象都有某种处理它们的方法。现在,虽然我意识到我可以在每个对象的模型中编写该方法,但我宁愿坚持 DRY(不要重复自己)理论并将该方法放在一个地方。
有没有一个地方我可以放置一个我所有的对象都可以访问的方法?
我正在开发一个 Rails 应用程序,我希望我的所有对象都有某种处理它们的方法。现在,虽然我意识到我可以在每个对象的模型中编写该方法,但我宁愿坚持 DRY(不要重复自己)理论并将该方法放在一个地方。
有没有一个地方我可以放置一个我所有的对象都可以访问的方法?
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
将所有模型中所需的代码放在 /lib 文件夹中的模块中,并在模型中使用它。