我有一个如下所示的模型:
class Question < ActiveRecord::Base
belongs_to :level
def next
Question.first(:conditions => ['id > ? AND level_id = ?', self.id, self.level_id], :order => 'id ASC')
end
end
这工作得很好,直到我通过 Rails 更新到版本 4.1.0。 现在我收到此错误:
ArgumentError in QuestionsController#answer invalid value for Integer(): "{:conditions=>[\"id > ? AND level_id = ?\""
我不知道如何解决这个问题。 Rails 更新可能是造成此问题的原因吗?我在另一个应用程序中使用了完全相同的方法,并且该方法仍然有效。
最佳答案
方法 first
在 Rails 4 中发生了变化。
在 Rails 3.2 之前,它将接受条件参数,并且您的实现可以正常工作。这是original documentation ,请注意它在使用 *args
之前如何检查它们的类型。
在 Rails 4 中,方法发生了变化 ( docs ),现在它只接受整数限制。
您应该使用以下内容更新您的实现:
def next
Question.where('id > ? AND level_id = ?', id, level_id).order(id: :asc).first
end
关于ruby-on-rails - Rails 更新 4.1.0 后,next 方法 (Class.first) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23391885/