Множественные ассоциации между двумя моделями в рельсах

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

Я использую правильные ассоциации и внешние ключи?

Я действительно получаю два разных числа, когда я делаю person.favorite_pet_id и person.favorite_pet.id

class Person < ActiveRecord::Base
 has_many :pets # pets table has a person_id
 has_one :favorite_pet, :class_name => 'Pet' # persons table has favorite_pet_id 
end
class Pet < ActiveRecord::Base
 belongs_to :person # using person_id in pets table
end
1 ответ

Поскольку, похоже, у вас есть файл favorite_pet_id в таблице лиц (как и должно быть), вам нужно использовать ассоциацию "принадлежность", а не "has_one", например:

class Person < ActiveRecord::Base
 has_many :pets # pets table has a person_id
 belongs_to :favorite_pet, :class_name => 'Pet' # persons table has favorite_pet_id 
end
class Pet < ActiveRecord::Base
 belongs_to :person # using person_id in pets table
end

Это должно исправить вашу проблему. Надеюсь, это поможет!

licensed under cc by-sa 3.0 with attribution.