Почему мой новый идентификатор всегда "1" - PullRequest
0 голосов
/ 27 апреля 2010

У меня есть родительско-дочерние отношения между двумя объектами.

Parent :has_many :children
Child  :belongs_to :parent

При создании нового родителя в том же контроллере я создаю дочерний элемент.

@mom = Parent.new
@child = Child.new
@mom.children << @child

Кажется, что все идет хорошо, но у этого родителя есть еще один атрибут - у этого родителя есть любимый ребенок

@mom.favorite_child = @child

Похоже, это должно работать, за исключением, скажем, что это 61-й дочерний элемент в базе данных, поэтому он получает идентификатор 61 (и я знаю, что это происходит, потому что когда я проверяю базу данных, дочерняя запись имеет идентификатор из 61). По какой-то причине, когда я назначаю @child родительскому атрибуту «favour_child», «favour_child» устанавливается в «1» - когда мне нужно, чтобы он был «61».

Улики?

1 Ответ

2 голосов
/ 27 апреля 2010

Кажется, что родителю нужно что-то вроде

class Parent
  has_many :children
  has_one :favorite_child, :foreign_key=>'favorite_child_id', :class_name => 'Child'

В противном случае он не знает, что это отношение внешнего ключа, и вы пытаетесь присвоить объект целому числу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...