【发布时间】:2014-03-27 21:16:57
【问题描述】:
我创建了一个 Rails 引擎,其中包含创建新用户时需要的一些常用功能。例如,有一个 before_validation(on: :create) 钩子,它用某些内容填充某个字段,以确保如果该字段中没有包含某些内容,则无法创建用户。它看起来类似于:
module OfflineUser
extend ActiveSupport::Concern
included do
before_validation(on: :create) do
self.member_number = rand(0..100000)
end
end
end
ActiveRecord::Base.send(:include, OfflineUser)
如果我将引擎包含到另一个项目中并执行 User.create 它会为我正确填充 member_number 字段。但是,因为它向 ActiveRecord::Base 添加了方法,所以它还尝试在我尝试运行 create 的每个模型中填充该字段!如何将此功能限制为仅用户模型或我选择的其他模型,而不是在每个模型上全局。谢谢。
【问题讨论】:
标签: ruby-on-rails ruby activerecord rails-engines