Связь «многие ко многим» с метаданными, хранящимися в таблице сопоставления в activerecord - PullRequest
1 голос
/ 29 марта 2012

У меня есть две таблицы с отношением многие ко многим, через третью таблицу.В третьей таблице приведен фрагмент данных, который мне нужно назначить при построении отношений между двумя таблицами. Как я могу использовать метод построения ActiveRecords для его назначения?

Вот код, показывающий, что я имею в виду:1003 *

class Company < Contact

  has_many :contact_companies
  has_many :people, :through => :contact_companies
  accepts_nested_attributes_for :people, :allow_destroy => true
  accepts_nested_attributes_for :contact_companies

end


class Person < Contact

  has_many :contact_companies
  has_many :companies, :through => :contact_companies
  accepts_nested_attributes_for :companies, :allow_destroy => true
  accepts_nested_attributes_for :contact_companies
end


class ContactCompany < ActiveRecord::Base
  belongs_to :person
  belongs_to :company
end

ContactCompany содержит элемент данных с именем "position".Что я хочу сделать, это что-то вроде:

c = Person.new
c.companies.build(:name => Faker::Company.name, :position => positions.sample)

РЕДАКТИРОВАТЬ:

Когда я пытаюсь код выше, я получаю "неизвестный атрибут: позиция".

1 Ответ

1 голос
/ 30 марта 2012

Строка c.companies.build пытается создать объект Company, у которого нет атрибута positionContactCompany), следовательно, ошибка. Похоже, вы пытаетесь установить атрибуты в двух разных моделях, поэтому вам нужно убедиться, что вы устанавливаете соответствующий атрибут для правильной модели:

# you can chain these calls but I separated them for readability
cc = c.contact_companies.build(:position => positions.sample)
cc.build_company(:name => Faker::Company.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...