У меня есть что-то вроде следующего:
class Project < ActiveRecord::Base
has_many :project_people
has_many :people, :through => :project_people
end
class Person < ActiveRecord::Base
has_many :project_people
has_many :projects, :through => :project_people
end
class ProjectPerson < ActiveRecord::Base
belongs_to :project
belongs_to :person
scope :lead, where(:is_lead => true)
scope :member, where(:is_lead => false)
end
При добавлении «ведущего» ProjectPerson в новый проект он создается правильно, но при вызове (скрытом) массива пусто:
@project = Project.new
=> #<Project id: nil, name: nil>
@project.project_people.lead.build
=> #<ProjectPerson id: nil, project_id: nil, person_id: nil, is_lead: true>
@project.project_people
=> []
Когда я пробую это без области видимости, ProjectPerson появляется в массиве:
@project.project_people.build
=> #<ProjectPerson id: nil, project_id: nil, person_id: nil, is_lead: false>
@project.project_people
=> [#<ProjectPerson id: nil, project_id: nil, person_id: nil, is_lead: false>]
Как я могу получить его, чтобы также были включены встроенные записи ассоциации с ограниченной областью видимости?
UPDATE :Это старый вопрос, который недавно привлек к себе внимание. Первоначально я включил простой пример двух областей видимости, использующих логическое значение. Несколько недавних ответов (февраль 2014 г.) были сосредоточены на моих конкретных примерах, а не на самом вопросе. Мой вопрос не касался конкретно "ведущей" и "членской" областей (иногда области намного сложнее, чем эта), а скорее о том, возможно ли использовать область, а затем метод build
на Модель ActiveRecord. Я надеюсь, что ошибаюсь, но в настоящее время, похоже, это не поддерживается.