2016-10-05 75 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