0

item の 2 つのインスタンスに属する ActiveRecord モデル 'offer' があります。アイテムはユーザーのものです。

オファー モデルには次のものがあります。

提供された_item_id 受信_item_id 提供_ユーザー_id 受信_ユーザー_id

モデルの作成では、Rails がアイテム ID を読み取り、その関係をたどってユーザーを保存するようにしたいと考えています。

私はこれを持っています:

class Offer < ActiveRecord::Base

  attr_accessible :offered_item_id, :receiving_item_id, :state

    belongs_to :offering_user, class_name: "User"
  belongs_to :receiving_user, class_name: "User"
  belongs_to :offered_item, class_name: "Item"
  belongs_to :receiving_item, class_name: "Item"

  before_save :populate_user_ids

  private
        def populate_user_ids
            self.receiving_user_id = self.receiving_item.user.id
            self.offering_user_id = self.offered_item.user.id
        end 

end

しかし、populate_user_idsメソッド内の値をハードコーディングしても機能しないようです。と呼ばれているかどうかbefore_saveもわかりません。

私のテストはアイテムの関係で成功していますが、ユーザーの関係は惨めに失敗します。

私のRSpecテストを見てください:

describe "relations" do
        it { should respond_to (:offering_user) }
        it { should respond_to (:offered_item) }
        it { should respond_to (:receiving_user) }
        it { should respond_to (:receiving_item) }
        its(:offering_user) { should == offering_user } #FAILS
        its(:offered_item) { should == offered_item }
        its(:receiving_user) { should == receiving_user } #FAILS
        its(:receiving_item) { should == receiving_item }
    end

申し訳ありませんが、私はRailsにかなり慣れていません。

何が問題なのですか?

ありがとう

4

1 に答える 1