app/models/rules/sealed_bid_auction.rb
class Rules::SealedBidAuction < Rules::BaseRules
def winning_bid
if auction_available?
NullBid.new
else
auction.lowest_bid || NullBid.new
end
end
def highlighted_bid(user)
if auction_available?
lowest_user_bid(user)
else
winning_bid
end
end
def veiled_bids(user)
if auction_available?
auction.bids.where(bidder: user)
else
auction.bids.order(created_at: :desc)
end
end
def user_is_bidder?(user)
user_bids(user).any?
end
def user_can_bid?(user)
super && !user_is_bidder?(user)
end
def max_allowed_bid
auction.start_price - PlaceBid::BID_INCREMENT
end
def show_bids?
!auction_available?
end
def rules_label
'Sealed bid'
end
def rules_route
'auctions_rules_sealed_bid'
end
private
def lowest_user_bid(user)
user_bids(user).first || NullBid.new
end
def user_bids(user)
auction.bids.where(bidder: user).order(amount: :asc)
end
end