如何修复弃用关系#首先使用finder选项

时间:2013-09-10 19:32:58

标签: ruby-on-rails

在我运行“Zip.code(74738).users.count”行的控制台中我收到以下错误:

DEPRECATION WARNING: Relation#first with finder options is deprecated. Please build a scope and then call #first on it instead. (called from code at /Users/lexi87/DATING/app/models/zip.rb:6)
  Zip Load (12.6ms)  SELECT `zips`.* FROM `zips` WHERE `zips`.`code` = 30052 ORDER BY `zips`.`id` ASC LIMIT 1

我尝试了一些事情,但仍然继续得到警告。这是它指向的原始代码:

  def self.code(code)
    first(:conditions => {:code => code})
  end

2 个答案:

答案 0 :(得分:2)

如果您使用的是Rails 4,请使用find_by

def self.code(code)
  find_by(code: code)
end

使用Rails 3,使用where(...).first代替动态查找器find_by_attr(效果不佳)

def self.code(code)
  where(code: code).first
end

答案 1 :(得分:1)

def self.code(code)
  where(:code => code).first
end

这应该具有相同的行为:如果找到一个ActiveRecord对象,或者如果不是则为nil。