Отказ от ответственности: мое первоначальное знакомство с Ruby on Rails было буквально много лет назад, и теперь для меня очень много нового, так как я собираю его обратно. Одна из этих вещей называется областями действия. Они кажутся великолепными, но я не получаю ожидаемого результата. Вот, к примеру,
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, чтобы дать мне исходный объект?