2017-11-03 16 views
1

アトリビュートを委任しているにもかかわらず、モデルをActiveAdminで保存しようとすると、OPタイトルにエラーが表示されます。 は具体的には、ここで起こるエラーを投げているのActiveRecordです:代理メソッドのモデルのActiveAdmin不明な属性 '属性'

activerecord (4.2.7.1) lib/active_record/attribute_assignment.rb:59:in `rescue in _assign_attribute' 

私のモデルは次のとおりです。私は、スキーマ

答えて

1
でそれを見ることができるよう

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を持っています

問題は、デリゲートを使用すると、属性を委譲するのではなく、メソッドを委譲します(私が間違っていれば修正します)。つまり、次のようにする必要があります。

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 

これは私のために働いた。