0

我正在开发一个 Rails 应用程序,我希望我的所有对象都有某种处理它们的方法。现在,虽然我意识到我可以在每个对象的模型中编写该方法,但我宁愿坚持 DRY(不要重复自己)理论并将该方法放在一个地方。

有没有一个地方我可以放置一个我所有的对象都可以访问的方法?

4

2 回答 2

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
于 2012-08-22T00:38:18.870 回答
0

将所有模型中所需的代码放在 /lib 文件夹中的模块中,并在模型中使用它。

于 2012-08-22T00:26:16.723 回答