Avertissement : j'ai découvert Ruby on Rails il y a des années, et beaucoup de choses sont nouvelles pour moi maintenant que je m'y intéresse à nouveau. L'une de ces choses, ce sont les scopes nommés. Ils semblent géniaux, mais je n'obtiens pas le résultat escompté. Voici une for-instance :
class User
has_many logs
named_scope :logged_in, :joins => ['logs'], :conditions => ['logs.logout_at IS NULL']
end
Class Log
belongs_to user
end
J'ai cru comprendre que la réalisation d'un
User.logged_in
devrait être exactement la même que celle d'un
User.find(:all, :joins => ['logs], :conditions => ['logs.logout_at IS NULL'])
Mais au lieu de cela, je reçois des objets différents. En voici la démonstration :
real = User.find_by_name('admin')
#<User id:12345, name: 'admin' ... >
fake = User.logged_in.find_by_name('admin')
#<User id: 54321, name: 'admin' ... >
Ma question est donc la suivante : d'où vient ce nouvel objet et comment puis-je faire en sorte que named_scope me donne l'objet original ?