2016-10-05 2 views
1

この質問に関連するモデルは、TransactionBidAuctionです。オークションが作成され、そのオークションで入札が明らかに作成されます。バイヤーが入札を選択してチェックアウトすると、オークションと入札後に取引が作成されます。Rails Association Convention

取引にはオークションと入札の関連付けがあり、取引に関する多くの情報(広告申込情報別出荷情報、税金、価格別)が含まれています。今、私は

トランザクション

class Transaction < ActiveRecord::Base 
    has_one :auction 
    has_one :bid 

入札

class Bid < ActiveRecord::Base 
    belongs_to :tx, class_name: "Transaction", foreign_key: "transaction_id" 

オークション

class Auction < ActiveRecord::Base 
    belongs_to :tx, class_name: "Transaction", foreign_key: "transaction_id" 

べき私のbelongs_tohas_oneを切り替えることが持っていますか?もしそうなら、どのように? 現在、BidAuctiontransaction_idです。そして私のTransactionにはauction_id

答えて

0

があります。

オークションが最初に作成され、オークションの入札が作成された場合、Bidにはauction_idの外部キーが必要です。トランザクションは、入札のシリーズがオークションに起こる後を作成している場合は

は、あなたのTransactionは、外部キーbid_idを持つべきである、とすでにbidによる暗黙的なリンクがあるので、auction_id外部キーを必要としません。

class Auction 
    has_many :bids 
end 

class Bid 
    belongs_to :auction 
end 

class Transaction 
    belongs_to :bid 
    has_one :auction, through: :bid 
end 
+0

'has_oneのがあるように必要はありません:入札モデルでtransaction'

あなたのRailsの団体は、thusly設定でしょうか? – gemart

+0

@gemart「入札」からその(オプションの)「取引」に進む必要がある場合のみ。そうした場合、 'has_one:transaction'を追加することはできますが、指定した入札額でトランザクションを参照する必要がない場合は、' has_one'は必要ありません。あなたが両側でそれを使うつもりでない限り、協会は両側で宣言する必要はありません。 – meagar

+0

私は '@ bid.tx'を呼び出せるようにする必要がありますが、私は@emagar – gemart

関連する問題