0

私のモデルをテストする試みで、私は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

コードフラグメントを機能させるにはどうすればよいですか?

4

1 に答える 1

4

次のいずれかのように見えます。

  • Occasionこれに最初のレコードを追加しようとしていますUser--Occasionまだレコードが作成されていない、または
  • Occasion最初のレコードを thisに追加しようとしていますがUser、そのレコードは既に別の に属していUserます。

コンソールでこれを試して、結果を投稿できますか?

foo = Occasion.first
Occasion.first.inspect
于 2012-05-08T01:43:46.507 に答える