私はBike
モデルとモデルを持っていComponent
ます。、などからいくつかのモデルが継承されComponent
ます。Frame
Chain
Crankset
フォームを送信すると、パラメータは次のようになります。
"bike" => { "frame" => { "id" => "4" }, "chain" => { "id" => "19" }, ... }
私のコントローラーでは、次のコードが壊れています。
@bike = Bike.new(params[:bike])
> Frame(#90986230) expected, got HashWithIndifferentAccess(#81888970)
フォームをハックして次のパラメーターを生成すると、機能します。
"bike" => { "frame_id" => "4", "chain_id" => "19" ... }
ここに私のモデルがあります:
class Bike < ActiveRecord::Base
belongs_to :frame
belongs_to :chain
...
end
class Component < ActiveRecord::Base
has_many :bikes
end
class Frame < Component
end
単一テーブルの継承が機能しています-問題なく呼び出すことができFrame.first
ますComponent.all
。
私は気が狂っていますか?ネストされたパラメーターは通常の規則ではありませんか? それが次のように生成されます。
- f.fields_for @bike.frame do |frame|
= frame.hidden_field :id
私は何を間違っていますか??