Rails: ассоциация один-ко-многим - PullRequest
1 голос
/ 24 мая 2011

Я использую Rails 3, и у меня есть связь один ко многим, которую я пытаюсь определить: пользователю может быть назначено много семейств тем, но семья может быть назначена только одному пользователю..

Вот что я определил:

class User
  has_many :subject_families

class SubjectFamily
  belongs_to :assignee, :class_name => "User", :foreign_key => 'assigned_to'

Я добавил миграцию, которая делает это:

change_table(:subject_families) do |t|
  t.integer :assigned_to
end

Я получаю исключение при попытке сделать:

u = User.first
s = u.subject_families

Вот исключение:

Invalid column name 'user_id'.: SELECT [subject_families].* FROM [subject_families] WHERE ([subject_families].user_id = 1)

Я ожидал, что это будет использование subject_families.assigned_to, а не user_id, но вот, я был разочарован этим ожиданием.Кто-нибудь может увидеть, что я мог здесь пропустить?Я много гуглил, и из того, что я вижу, СЛЕДУЕТ работать.

Ответы [ 2 ]

5 голосов
/ 24 мая 2011

Полагаю, вам также необходимо указать параметр: foreign_key в объявлении ассоциации has_many в вашей модели пользователя.

class User
  has_many :subject_families, :foreign_key => 'assigned_to'
2 голосов
/ 24 мая 2011

Вам также необходимо указать :foreign_key => 'assigned_to' в отношении has_many на User.

...