未定义的方法'order' - find_by_id + order DESC + first Rails

时间:2015-09-14 09:05:48

标签: ruby-on-rails

我想找到拍卖的最高出价。在拍卖控制器中,我执行以下操作:首先,我想通过ID检索出价模型的所有出价,然后我想按结果降序排序,然后选择第一个(=应该是最高出价):

@highest_bid = Bid.find_by_auction_id(params[:id]).order("amount DESC").first

引发此错误:

NoMethodError in AuctionsController#show undefined method `order' for #<Bid:0x98e52e8>

提取的来源(第11行):

    @auction = Auction.find(params[:id])
    @seller = User.find(@auction.user_id)
    @highest_bid = Bid.find_by_auction_id(params[:id]).order("amount DESC").first

2 个答案:

答案 0 :(得分:1)

您只有ActiveRecord::Relation课程有order方法,而find_*操作会返回ActiveRecord::BaseBid,在您的情况下)。

您应该像这样重写您的查询:

@highest_bid = Bid.where(auction_id: params[:id]).order("amount DESC").first

答案 1 :(得分:1)

find_by_auction_id会返回单个Bid对象,您无法在其上调用order。你应该这样做:

@higheset_bid = @auction.bids.order('amount DESC').first

如果您没有此关联,则应在has_many :bids模型中创建Auction关联。