如何返回下一条记录?

时间:2013-12-04 12:28:56

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

在我的Rails应用中,我有一个函数next,我在show模板中使用该函数链接到下一个product(按price排序):

class Product < ActiveRecord::Base 

  belongs_to  :user

  def next
    Product.where("user_id = ? AND price > ?", user_id, price).order("price ASC").first 
  end

end

问题是此功能仅在所有产品具有不同的价格时才有效。当有多个产品具有相同的价格时,next函数会随机选择一个产品(?),从而跳过所有其他产品。

有没有办法让这个功能返回下一个产品,即使价格相同? (如果价格相同,可以通过ID或日期订购产品)

我尝试用>替换>=,但这不起作用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您必须在id子句和where中使用order

  def next
    Product.where("user_id = ? AND price >= ? AND id > ?", user_id, price, id).order("total, id").first 
  end