私は採用しましたが、何かが機能していない理由が正確にはわかりません。
Item と呼ばれる 1 つのモデルのみに使用する高価なポリモーフィック アソシエーションがあります。次のようになります。
class Item < ActiveRecord::Base
#price
has_one :price, :as => :pricable
accepts_nested_attributes_for :price
attr_accessible :price_attributes, :price, ....
Event モデルに追加したいのですが、以下を追加しました。
class Event < ActiveRecord::Base
#price
has_one :price, :as => :pricable
accepts_nested_attributes_for :price
attr_accessible :price, :price_attributes
ただし、設定できません:
ruby-1.9.2-p290 :001 > e=Event.find(19) #ok
ruby-1.9.2-p290 :002 > e.price
Creating scope :page. Overwriting existing method Price.page.
Price Load (0.8ms) SELECT `prices`.* FROM `prices` WHERE `prices`.`pricable_id` = 19 AND `prices`.`pricable_type` = 'Event' LIMIT 1
=> nil
ruby-1.9.2-p290 :003 > e.price.price=23
NoMethodError: undefined method `price=' for nil:NilClass
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.0/lib/active_support/whiny_nil.rb:48:in `method_missing'
from (irb):3
うーん....関係が正しく設定されているようで、イベントは attr_accessible を介して価格にアクセスできます。他に何が起こっているのでしょうか?
どうも