当我使用 Rails 引擎并希望覆盖并添加其行为时,我遇到了以下问题:
假设引擎有一个名为 Course 的 ActiveRecord 模型
module MyEngine
class Course < ActiveRecord::Base
attr_accessible :name, :description, :price
end
end
我想在我的主要 Rails 应用程序中创建一个迁移,向其中添加一列,我需要将该新列添加到 attr_accessible (以便可以批量分配)
MyEngine::Course.class_eval do
attr_accessible :expiration_date
end
但是随后 Rails 抱怨前 3 个属性不是 Mass-Assignable,因此我必须重新声明被覆盖类中的所有属性,而不是仅仅将新属性“添加”到覆盖中,例如:
MyEngine::Course.class_eval do
attr_accessible :name, :description, :price, :expiration_date
end
有没有更好的方法不重新声明这些属性,而只是添加新属性?