У меня есть реализация STI следующим образом:
class Automobile < ActiveRecord::Base
end
class Car < Automobile
end
class Truck < Automobile
end
class User < ActiveRecord::Base
has_many :automobiles
accepts_nested_attributes_for :automobiles
end
Я создаю список автомобилей для пользователя. Для каждого автомобиля пользовательский интерфейс устанавливает поле type
и свойства, связанные с автомобилем. При отправке формы поле type
игнорируется, поскольку является защищенным атрибутом.
Как мне обойти эту проблему? Есть ли декларативный способ unprotect
защищенного атрибута?
Edit:
Это мое текущее решение проблемы:
Я переопределил приватный метод attributes_protected_by_default
в своем классе модели.
class Automobile < ActiveRecord::Base
private
def attributes_protected_by_default
super - [self.class.inheritance_column]
end
end
Это удаляет поле type
из защищенного списка.
Я надеюсь, что есть лучший способ, чем этот.