次の2つのクラスがあります
class Car < Vehicle
has_one :steering_wheel, as: :attached
end
class SteeringWheel < ActiveRecord::Base
belongs_to :attached
has_many :components
has_one :rim, class_name: 'Components', order: 'id DESC'
attr_accessible :components
end
class Component < ActiveRecord::Base
include SpecificationFileService::Client
attr_accessible :created_by
belongs_to :steering_wheel
end
次に、私の仕様では:
context "given an attachment", :js do
before do
@car = create(:car, make: "honda")
@steering_wheel = SteeringWheel.create(attached: @car)
@steering_wheel.save
@car.save
@car.reload
end
specify "test the setup", :js do
puts @car.steering_wheel
end
end
どちらが印刷されますか:nil
私が修正を見つけた方法は、次のように明示的に車にsteering_wheelを設定することです:
@car.steering_wheel = @steering_wheel
の直前save
。
編集:
以下のコメントで示唆されているように、polymorphic: true を追加してみましたが、問題は解決しませんでした。また、上記の SteeringWheel モデルをさらに肉付けしました。
私の質問は、なぜ、これをコールバックチェーンに暗黙的に追加するにはどうすればよいですか