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にかなり慣れていません。
何が問題なのですか?
ありがとう