Rails, has_and_belongs_to_many, ошибка: HashWithIn DifferentAccess

На моем сервере у меня есть две модели:

Трансляция

class Broadcast < ActiveRecord::Base

  validates_presence_of :content

  belongs_to :user

  has_and_belongs_to_many :feeds

  attr_accessible :content, :feeds, :feeds_attributes

end

Фид

class Feed < ActiveRecord::Base
  has_and_belongs_to_many :broadcasts
  attr_accessible :name
end

На моем клиенте у меня есть базовые классы ActiveResource для этих моделей.

Когда я пытаюсь создать новую трансляцию с заданными каналами (от клиента):

feed = Feed.find(3) <-succesful

broadcast = Broadcast.new
broadcast.attributes['feed'] ||= [] 
broadcast.feed << feed
broadcast.save

В BroadcastController на сервере я просто делаю

@broadcast = Broadcast.new(params[:broadcast])

выдает следующую ошибку:

ActiveRecord::AssociationTypeMismatch (ожидаемый Feed(#45931224), полученный ActiveSupport::HashWithIn DifferentAccess(#25685616)):

я пытался изменить

broadcast.attributes['feed'] ||= [] 

to

broadcast.attributes['feed_attributes'] ||= [] 

Но это дало мне «Неизвестная ошибка атрибута»


person George    schedule 27.11.2012    source источник


Ответы (1)


неважно, мне не хватило:

accepts_nested_attributes_for :feeds

в моем методе вещания.

В любом случае, если кто-то столкнется с этим вопросом, обратите внимание, что:

broadcast.attributes['feed_attributes'] ||= [] 

правильно, без суффикса «_attributes» ошибка HashWithIn DifferentAccess все еще возникает.

person George    schedule 27.11.2012