1

在控制台中,当我运行“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
4

2 回答 2

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
于 2013-09-10T19:39:08.577 回答
1
def self.code(code)
  where(:code => code).first
end

这应该具有相同的行为:如果找到 ActiveRecord 对象,则返回一个对象,否则返回 nil。

于 2013-09-10T19:39:52.660 回答