16

belongs_to同じモデルに対して複数の関係があります。次のように2人のユーザー間のメッセージをモデル化します(Messageモデル内):

  belongs_to :to, :class_name => 'User', :foreign_key => 'to_id'
  belongs_to :from, :class_name => 'User', :foreign_key => 'from_id'

  attr_accessible :to, :from # ...

対応するhas_many呼び出しはUserモデルにあります。from_id次の非推奨の警告(との両方to_id)を除いて、すべてが仕様とコンソールで必要に応じて機能します。

DEPRECATION WARNING: You're trying to create an attribute `from_id'. Writing arbitrary attributes on a model is deprecated. Please just use `attr_writer` 

関連する仕様は次のとおりです。

  it "can associate users" do
    User.delete(:all)
    ufrom = FactoryGirl.create(:DrKevorkian)
    ufrom.save!
    uto = FactoryGirl.create(:JohnSmith)
    uto.save!

    m = Message.new
    m.from = ufrom   # <-- Warning here
    m.to = uto       # <-- Warning here
    m.save

    m.from.id.should == ufrom.id
    m.to.id.should == uto.id

  end

アソシエーションの結果として警告が発生しているように見えますbelongs_to-これを行うためのよりクリーンでより良い方法はありますか?

どうもありがとう。

4

1 に答える 1

53

私の経験では、実行を忘れた場合やスキーマを変更した後に、この警告が表示されrake db:migrateますrake db:test:prepare

于 2012-10-09T12:45:47.183 に答える