免責事項: 私が最初に Ruby on Rails に触れたのは文字通り何年も前のことであり、それを再び取り上げている今、非常に多くのことが私にとって新しいことです。これらの 1 つが名前付きスコープです。素晴らしいようですが、期待した結果が得られません。たとえば、次のようになります。
class User
has_many logs
named_scope :logged_in, :joins => ['logs'], :conditions => ['logs.logout_at IS NULL']
end
Class Log
belongs_to user
end
私の理解では、
User.logged_in
を行うのとまったく同じでなければなりません
User.find(:all, :joins => ['logs], :conditions => ['logs.logout_at IS NULL'])
しかし、代わりに、別のオブジェクトを取得しています。デモンストレーションするには:
real = User.find_by_name('admin')
#<User id:12345, name: 'admin' ... >
fake = User.logged_in.find_by_name('admin')
#<User id: 54321, name: 'admin' ... >
だから私の質問は、この新しいオブジェクトは一体どこから来たのか、named_scope を取得して元のオブジェクトを取得するにはどうすればよいのかということです。