0

在我的服务器上,我有两个模型:

播送

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::HashWithIndifferentAccess(#25685616)):

我试着改变

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

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

但它给了我“未知属性错误”</p>

4

1 回答 1

0

没关系,我错过了:

accepts_nested_attributes_for :feeds

在我的广播方法中。

无论如何,如果有人遇到这个问题,请注意:

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

是正确的,没有'_attributes'后缀仍然会出现HashWithIndifferentAccess错误。

于 2012-11-27T18:44:58.647 回答