我有几种方法可以在模型之间共享,而不是复制和粘贴它们.在控制器中,我可以通过将方法放在application_controller.rb中来实现,该方法自动包含在每个控制器中.模特有类似的东西吗?
谢谢!
Jos*_*man 16
您可以functionality.rb在libRails应用程序的目录中创建一个名为或类似的文件.使模块命名的文件在Rails启动时自动加载.例如,如果我想向多个模型添加标记,我会创建一个名为的文件lib/flagging.rb,它看起来像这样:
module Flagging
# Flags an object for further review
def flag!
self.update_attribute(:flagged, true)
end
# Clears all flags on an object
def deflag!
self.update_attribute(:flagged, false)
end
end
Run Code Online (Sandbox Code Playgroud)
在我希望添加此功能的每个模型中,我会执行以下操作:
class Foo < ActiveRecord::Base
include Flagging
end
Run Code Online (Sandbox Code Playgroud)
然后,我就可以做类似的事情:
foo = Foo.create
foo.flag!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |