

まずはこちら、pryのデバッグを御覧ください。

[code]

    [11] pry(#<BookController>)> a = Sentence.find_by book_id: 10                                                                                     
      CACHE (0.0ms)  SELECT  "sentences".* FROM "sentences" WHERE "sentences"."book_id" = ? LIMIT 1  [["book_id", 10]]
    => #<Sentence:0x000000036ebbf0 id: 1, text: "こんにちは", created_at: nil, updated_at: nil, user_id: 1, book_id: 10, sort: 1>
    [12] pry(#<BookController>)> Sentence.find(:all, :conditions => { :book_id => 10 })
      CACHE (0.0ms)  SELECT "sentences".* FROM "sentences" WHERE "sentences"."id" IN (NULL, NULL)
    ActiveRecord::RecordNotFound: Couldn't find all Sentences with 'id': (all, {:conditions=>{:book_id=>10}}) (found 0 results, but was looking for 2)
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/relation/finder_methods.rb:324:in `raise_record_not_found_exception!'
    
[/code]

このように **find_by** で **book_id** を指定すると見つかるのに、 **find**
で複数のレコードを条件付きで取得すると見つかりません。

ちなみに  
`Sentence.find(:all)`  
だと問題無く全Sentenceレコードが取得できます。  
全く原因が分かりません。何かお気づきの方がいましたらご教授お願いいたします。


CC BY-SA 3.0
2016-12-16T17:11:09.493
31191
2017-04-01T16:12:25.250
19939
question
ruby-on-rails ruby
find_byだと見つかるのにfindだと見つからない


Railsのバージョンを確認してください  
その記法は相当古い時代（Rails2）のものです


CC BY-SA 3.0
2016-12-16T21:51:27.773
31193
2016-12-16T21:51:27.773
19298
31191
answer


条件に合った複数レコードを取得する場合は、whereを使うことが一般的です。

<http://railsdoc.com/references/where>


CC BY-SA 3.0
2017-01-30T09:07:25.420
32253
2017-01-30T09:07:25.420
19887
31191
answer