【问题标题】:Rails Association (belongs_to) dilemmaRails 协会 (belongs_to) 困境
【发布时间】:2012-10-21 09:54:34
【问题描述】:

我有一个用户模型:

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卡在create action就行了

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

然后说unknown attribute: user_id

我已经完成了db:migrate,但它仍然无法正常工作。

我必须执行以下操作才能使其正常工作吗?

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

还是我错过了什么?

【问题讨论】:

  • 不确定是这种情况,但您在foreign这个词中有错字
  • 哎呀,代码本身拼写正确
  • 有一个我想使用的 owner_id 列
  • 我希望能够通过@card.owner 获取任何卡的所有者。另外,我想通过@user.cards查看用户的所有卡片
  • 好的,我明白了。请参阅下面的答案

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


【解决方案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

【讨论】:

  • 如果我在创建卡后执行@card.owner,我会得到零。我应该在迁移或控制器中做一些特别的事情吗?
猜你喜欢
  • 1970-01-01
  • 2016-05-11
  • 2016-02-04
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多