Rails Association(belongs_to)进退两难

时间:2012-10-21 09:54:34

标签: ruby-on-rails-3 associations has-many belongs-to

我有一个用户模型:

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将检索拥有该卡的用户

我的问题是,我知道rails会自动连接关联中的id但是没有发生。

在CardController中

,rails卡在行

上的创建操作中
@card=current_user.cards.new(params[:card])

并说unknown attribute: user_id

我已完成db:migrate,但仍然无效。

我必须按照以下方式工作吗?

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

或者我错过了什么?

1 个答案:

答案 0 :(得分: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