Основной праймер:
class User
has_many :programs, :through => :memberships
has_many :memberships
end
class Program
end
class Membership
belongs_to :user
belongs_to :program
end
Консоль
User.new.save
Program.new.save
User.programs << Program.first
User.first.programs.class
# => Array
User.first.programs.methods.grep /where/
# => []
User.first.programs.where :id => 1
# => [#<Program id: 1>]
User.first.programs.where(:id => 1).class
# => ActiveRecord::Relation
Таким образом, вопрос в том, что User.first.programs
, метод has_many, похоже, возвращает результат, который лает как ActiveRecord::Relation
и принимает методы как Relation
, но идентифицирует себя как Array
и разделяет его методы с экземпляром класса Array
.
Так что же дает?