2

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

喂养

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

播送

 class Broadcast < ActiveRecord::Base

    validates_presence_of :content

    attr_accessible :content, feeds, feeds_attributes

    belongs_to :user
    has_many :feeds
    accepts_nested_attributes_for :feeds

    def to_s
      result = "id: " + id.to_s + " content: " + content
      if user
        result += " user: " + user.id.to_s
      end
      result
    end

    def self.per_page
      8
    end
    end

在我的客户端上,我有用于 Broadcast 和 Feed 的基本 ActiveResource 类

当我尝试使用给定的提要(来自客户端)创建新的广播时:

feed1 = Feed.find(3) <-succesful

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

在服务器上的 BroadcastController 中,我只是做

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

这给出了以下错误:

无法批量分配受保护的属性:Feed

4

2 回答 2

0

您不能直接将提要分配给 feed_attributes 哈希(如果这是您实际尝试做的)。

更改broadcast.feed_attributes << feed(不应该是 feed1 吗?)为:

broadcast.feed_attributes << feed1.attributes
于 2012-11-27T13:37:28.327 回答
0

我认为您需要在广播模型中添加一个名为 feed_id 的列,并且 attr_accessible 将是

attr-accessible :feed_id

在广播模型内

需要创建外键

于 2012-11-27T13:28:28.457 回答