ActiveAdmin未知属性'属性' for for delegated method

时间:2017-11-03 15:29:49

标签: ruby-on-rails ruby activeadmin

我在尝试通过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,因为我可以在架构中看到它

1 个答案:

答案 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

这对我有用。