Rails, has_and_belongs_to_many, :HashWithIndifferentAccess e



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

广播

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

在服务器上的广播控制器中,我只需做

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

它给出以下错误:

ActiveRecord::AssociationTypeMismatch (Feed(#45931224) expect, get ActiveSupport::HashWithIndifferentAccess(#25685616)):

我试过改变

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

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

但它给了我"未知属性错误"

关系,我错过了:

accepts_nested_attributes_for :feeds

在我的广播方法中。

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

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

是正确的,如果没有"_attributes"后缀,仍然会发生HashWithIndifferentAccess错误。

相关内容

  • 没有找到相关文章

最新更新