Как мне создать в Rails ассоциацию has_many с областью действия

У меня есть что-то вроде следующего:

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. Я надеюсь, что ошибаюсь, но в настоящее время, похоже, это не поддерживается.

9
задан robertwbradford 17 February 2014 в 22:26
поделиться