与Postgres和Devise的活动记录关系不起作用

时间:2013-10-23 03:58:38

标签: ruby-on-rails activerecord devise relationship has-many

我正在努力为用户提供帮助。

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
  has_many :deeds
end

class Deed < ActiveRecord::Base
  belongs_to :user  
end

在Rails控制台中我收到此错误:ActiveRecord :: UnknownAttributeError:unknown属性:user_id

有人可以解释一下这有什么问题。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您需要名为Deed的{​​{1}}模型中的列。当您创建关联时,Rails会自动使用契约所属用户的ID填充该列(例如,通过user_id)。

为每个行为定义@deed.user = User.first后,调用user_id之类的内容将允许Rails执行一个SQL查询,该查询说“给我任何user_id等于此用户ID的行为”。同样,当你调用@user.deeds时,Rails可以发出一个SQL查询,上面写着“给我一个id等于这个deed的user_id的用户”。