我是ruby on rails的新手。我想知道是否有任何选项可以在模型文件之外编写ruby回调。
提前致谢
答案 0 :(得分:3)
您可以使用ActiveSupport :: Concern
来实现在app / model / concerns / model_callbacks.rb
下创建一个文件
module ModelCallbacks
extend ActiveSupport::Concern
included do
before_create :do_this
#...
def do_this
# ...
end
end
end
在model.rb中包括那个问题
include ModelCallbacks
答案 1 :(得分:0)
可以从模型外部调用它,违反了对象封装的原则
答案 2 :(得分:0)
您可以通过调用require 'filename'
并将filename
文件放在lib
文件夹中来完成。此外,如上所述,您可以使用问题。
示例:强>
#app/model/user.rb
require 'user_external_callbacks.rb'
Class User < ActiveRecord::Base
# your normal class
end
#lib/user_external_callbacks.rb
Class User < ActiveRecord::Base
before_create :my_callback
private
def my_callback
end
end
PS: 您无需在模型文件中调用此require
。您可以将此require
放在任何模型文件中 - 在文件的开头或末尾,或任何初始化文件(“config / initializers”),或application.rb,或几乎任何被调用的文件一次是通过Rails
PS II: 除非必要,否则请避免将模型回调放入另一个文件中。您将远离Rails编码的默认模式,并且对其他程序员来说维护代码会更加困难。