Рельсы принадлежат_то и одностороннее наследование, не поведение

StackOverflow https://stackoverflow.com/questions/3837135

Вопрос

у меня есть 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

Что я делаю неправильно??

Это было полезно?

Решение

Вы используете вложенные формы, настолько вложенные параметры должны работать, если вы используете accepts_nested_attributes_for Теги (см Railscast 196/197.).

belongs_to :frame
accepts_nested_attributes_for :frame
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top