2

Rails 4 正在摆脱动态查找器,所以

User.find_by_hash(hash)

变成

User.where(hash: hash) # .first

好吧,没什么大不了的。User.find_by_hash!(hash)但是,既然没有方法,那么处理动态 bang finder 的最佳方法是什么where!()Rails 4 Release Notes很方便地避免了这种情况。

更新:它明确地说:“除了 find_by_... 和 find_by_...!的所有动态方法都已弃用。”

从那以后,要么页面发生了变化,要么我在阅读时失明了。

4

3 回答 3

2

好吧,如果您需要一种在关系为空时找到所有但引发异常的方法,您可以自己为您的模型创建这样的新方法(或混合到 ActiveRecord::QueryMethods)。就像是:

def where!(*args)
  rel = where(*args) 
  raise RecordNotFound if rel.empty?
  rel
end
于 2013-03-06T20:21:07.900 回答
2

我认为新语法是

User.find_by!(hash: hash)

至少 ryanb 是这样做的: http ://railscasts.com/episodes/400-what-s-new-in-rails-4

希望有帮助。

于 2013-01-17T07:17:17.143 回答
2

它明确地说:“除了 find_by_... 和 find_by_...!所有动态方法都已弃用。”

于 2013-03-07T05:05:26.643 回答