2016-10-05 121 views
1

有三種型號與此問題相關TransactionBidAuction。拍賣被創建,然後顯然在該拍賣中創建出價。交易是在買方選擇出價並結賬後創建的,因此在拍賣和出價之後。軌道協會公約

交易與拍賣和投標有關聯,並且包含大量關於交易的信息(即,運輸信息,稅收,按行項目劃分的價格)。現在我已經得到了

交易

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切換?如果是這樣如何? 現在我的BidAuction有一個transaction_id。而我的Transaction有一個auction_id

回答

0

你的關聯是向後的。

如果先創建一個拍賣,然後爲拍賣創建出價,那麼您的Bid需要一個auction_id外鍵。

如果交易被一系列的出價爲發生的拍賣之後創建,您Transaction應該有一個外鍵bid_id,並且已經存在通過bid一個隱含的鏈接並不需要一個auction_id外鍵。然後

你的Rails協會將設置正是如此:

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'在投標模式? – gemart

+0

@gemart只有當您需要能夠從「Bid」轉到其(可選)Transaction時。如果你這樣做,那麼你可以添加一個'has_one:transaction',但是如果你不需要爲給定的出價查詢交易,那麼'has_one'就沒有必要了。除非你打算在雙方都使用它,否則協會不一定要在雙方聲明。 – meagar

+0

我需要能夠調用'@ bid.tx',但我不能@meagar – gemart