1

私はユーザーモデルを持っています:

class User < ActiveRecord::Base

  has_many :cards

end

とカードモデル:

   class Card< ActiveRecord::Base

      belongs_to :user, :foreign_key => "owner_id"

   end

カードモデルには、「owner_id」という属性もあります。これは、次のように使用します。Card.first.ownerは、そのカードを所有するユーザーを取得します。

そのような私の問題は、レールが関連付け内のIDを自動的に接続することを知っていますが、それは起こりません。

CardControllerでは、レールがライン上の作成アクションでスタックします

@card=current_user.cards.new(params[:card])

と言いますunknown attribute: user_id

私はやりましたがdb:migrate、それでも機能しません。

それが機能するためには、次のようにする必要がありますか?

@card = Card.new(params[:card])
@card.owner_id=current_user.id

または私は何かが欠けていますか?

4

1 に答える 1

1

まず第一に、これにはowner_id列は必要ありません。あなたに必要なのは

class User
  has_many :cards
end

これにより、@user.cardsが得られます

class Card
  belongs_to :owner, :class_name => "User", :foreign_key => "user_id"
end

これにより、@card.ownerが提供されます

于 2012-10-21T10:36:41.233 に答える