2

Rails 4は動的ファインダーを排除しているので、

User.find_by_hash(hash)

になります

User.where(hash: hash) # .first

大したことではありません。User.find_by_hash!(hash)しかし、方法がないので、動的な強打ファインダーに対処するための最良の方法は何where!()ですか?Rails4リリースノートはこれを回避するのに便利です。

更新:「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 に答える