2つのモデル(レール2.3.8):
ユーザー; ユーザー名と無効なプロパティ; ユーザーhas_one:profileプロファイル; フルネームと非表示のプロパティ
disable=1およびhidden=1のユーザープロファイルを削除するnamed_scopeを作成しようとしています。さらに、ユーザーモデルは通常プロファイルモデルと組み合わせて使用されますが、:include =>:profile構文を使用してこれを指定できる柔軟性が必要です。
次のユーザーnamed_scopeがあります。
named_scope :visible, {
:joins => "INNER JOIN profiles ON users.id=profiles.user_id",
:conditions => ["users.disabled = ? AND profiles.hidden = ?", false, false]
}
これは、ユーザーモデルを参照するだけで期待どおりに機能します。
>> User.visible.map(&:username).flatten
=> ["user a", "user b", "user c", "user d"]
ただし、プロファイルモデルを含めようとすると、次のようになります。
User.visible(:include=> :profiles).profile.map(&:full_name).flatten
次のようなエラーが発生します。
NoMethodError: undefined method `profile' for #<User:0x1030bc828>
この方法でモデルコレクションの境界を越えることはできますか?