Когда я использую Rails Engine и хочу переопределить и добавить к его поведению, я столкнулся со следующей проблемой:
Скажем, в Engine есть модель ActiveRecord с именем Course.
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 атрибута не являются массово назначаемыми, поэтому вместо того, чтобы просто «добавить» новый атрибут в переопределение, мне нужно повторно объявить все атрибуты в переопределенном классе, например:
MyEngine::Course.class_eval do
attr_accessible :name, :description, :price, :expiration_date
end
Есть ли лучший способ не объявлять эти атрибуты повторно, а просто добавить новый атрибут?