2

サーバーには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

クライアントには、ブロードキャストとフィード用の基本的な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])

これにより、次のエラーが発生します。

保護された属性を一括割り当てできません:フィード

4

2 に答える 2

0

ブロードキャストモデルにfeed_idという列を追加する必要があると思います。attr_accessibleは次のようになります。

attr-accessible :feed_id

放送モデル内

外部キーを作成する必要があります

于 2012-11-27T13:28:28.457 に答える
0

フィードをfeed_attributesハッシュに直接割り当てることはできません(それが実際に行おうとしている場合)。

( feed1broadcast.feed_attributes << feedではないでしょうか?)を次のように変更します。

broadcast.feed_attributes << feed1.attributes
于 2012-11-27T13:37:28.327 に答える