ユーザーに属するモデル Email_address があります。私の User モデルでは、has_many email_addresses と表示されています。次のコンソール出力を検討してください。
irb(メイン):073:0>
b = EmailAddress.find(2)
EmailAddress Load (0.4ms) SELECT email_addresses.* FROM email_addresses WHERE email_addresses.id = 2 LIMIT 1
=> #EmailAddress id: 2, email: "w@example.com", user_id: 2, created_at: "2013-03-06 02:33:40", updated_at: "2013-03-06 02:33:40 "
irb(メイン):074:0>
b.user
ユーザー負荷 (0.1ms) SELECT users.* FROM users WHERE users.id = 2 LIMIT 1
=> #ユーザー ID: 2、ユーザー名: "w"、created_at: "2013-03-06 02:33:40"、updated_at: "2013-03-06 02:33:40"
irb(メイン):075:0>
b = EmailAddress.where(:email => "r@example.com")
EmailAddress Load (0.1ms) SELECT email_addresses.* FROM email_addresses WHERE email_addresses.email = r@example.com
=> #EmailAddress id: 1, email: "r@example.com", user_id: 1, created_at: "2013-03-05 07:26:56", updated_at: "2013-03-05 07:26:56 "
irb(メイン):076:0>
b.user
NoMethodError: 未定義のメソッド ユーザー # from /var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/relation/delegation.rb:45:in `method_missing' from (irb):76
where()
使用するとユーザーを見つけることができないのに、find() を使用すると機能する理由を誰かに教えてもらえますか? これは非常に紛らわしい出力です。