Rails“AssociationTypeMismatch”错误

时间:2012-05-08 01:35:51

标签: ruby-on-rails activerecord

在尝试测试我的模型时,我试图在rails控制台中运行以下命令:

user.occasions << Occasion.first

收到此错误:

irb(main):013:0>  user.occasions << Occasion.first
Occasion Load (0.2ms)  SELECT "occasions".* FROM "occasions" LIMIT 1
(0.0ms)  begin transaction
(0.0ms)  rollback transaction
ActiveRecord::AssociationTypeMismatch: Occasion(#70119208170580) expected, got NilClass(#70119200119960)`

以下是我的模型类:

class User < ActiveRecord::Base
  has_many :occasions
  rolify
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
  attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :id
end

class Occasion < ActiveRecord::Base
  attr_accessible :date, :name
  belongs_to :user
end

如何让我的代码片段起作用?

1 个答案:

答案 0 :(得分:4)

看起来好像是:

  • 您尝试将第一个Occasion记录添加到此User - 并且尚未创建Occasion条记录,或
  • 您正在尝试将第一个Occasion记录添加到此User,并且该记录已属于另一个User

你可以在控制台试试并发布结果吗?

foo = Occasion.first
Occasion.first.inspect