我在尝试通过ActiveAdmin保存模型时得到了OP标题中提到的错误,尽管委托了该属性。 具体来说,它的ActiveRecord抛出了这里发生的错误:
activerecord (4.2.7.1) lib/active_record/attribute_assignment.rb:59:in `rescue in _assign_attribute'
我的模特是:
class Hero < ActiveRecord::Base
has_one :link, as: :linkable
delegate :url, :section_id, :pdf, :path, to: :link, allow_nil: true
accepts_nested_attributes_for :link, allow_destroy: true
end
Link
肯定在模型上有section_id
,因为我可以在架构中看到它
答案 0 :(得分:1)
问题在于,当你使用委托时,它不委托属性,而是委托方法(如果我错了就纠正我),这意味着你必须这样做:
class Hero < ActiveRecord::Base
has_one :link, as: :linkable
delegate :url, :section_id,:section_id=, :pdf, :path, to: :link, allow_nil: true
accepts_nested_attributes_for :link, allow_destroy: true
end
这对我有用。