免責事項:Ruby on Railsへの私のオリジナルの露出は、文字通り数年前です。これらのうちの1つがスコープと呼ばれています。彼らは素晴らしいようだが、私は期待した結果を得ていない。ここのためのインスタンスです:named_scopeは、次のように新しいオブジェクトを作成しています:join
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が私にオリジナルのものを与えることを得るのですかどこ?
問題をRailsの2.1と一緒に壊し、その癖であり、スコープ内で使用する場合の結合結果詳細はこちら:http://selfamusementpark.com/blog/2008/07/10/named_scope-joins-includes/ 以下の回答は素晴らしい回避策でした。 – Atiaxi