私は奇妙な問題があります。Rails 3- find_by not working
私は2つのモデルを持っています。それらの間に多対多の関係を持つユーザーとロールがあります。 ユーザーのロールコレクション内で、名前が「Administrator」のロールをフィルタリングしたいとします。モデルで
このコード画面に
puts self.roles.to_s
プリント: [ロールID:1、名称: "管理者" のcreated_at: "2012年1月22日午前21時55分45秒"、updated_atの: "2012年1月22日二十一時55分45秒"]
しかし、このコード
puts self.roles.find_by_name('Administrator').to_s
は何も印刷されません。この1つ:
puts self.roles.find_by_name('Administrator').nil?
prints true!
私のfind_by_nameメソッドが機能しないのはなぜですか? 私はそれをコンソールで試しましたが、うまくいきます。
私のコードスニペットは次のとおりです。
puts self.roles.to_s
puts self.roles.find_by_name('Administrator').to_s
puts self.roles.find_by_name('Administrator').nil?
、出力は以下の通りです:
[Role id: 1, name: "Administrator", created_at: "2012-01-22 21:55:45", updated_at: "2012-01-22 21:55:45"]
<none>
true
は私が間違って何をやっています?それは何か愚かでなければならない。 このコードは検証メソッドにあり、ユーザーが保存される前に実行されます。
両方のテーブルに名前列がありますか? – jstim
'find_by_name'を呼び出すとき、データベースの新しい役割はありますか? –
両方の質問に該当します – Tony