Self ID в модели, до создания записи - рельсы 3 - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть некоторый код в моей модели Item (очень свободно), например, такой:

def author_id=(xyz) 
  book = Book.find_by_author_id(xyz)
  book.author_id = self.id
end

self.id, похоже, не настроен при создании новой записи ... Есть идеи?

Ответы [ 3 ]

4 голосов
/ 11 декабря 2011

id устанавливается на запись только после его сохранения в базе данных. Таким образом, вы можете добавить простой обратный вызов здесь

after_create (or after_save - whatever you need) do |record|
  book = Book.find_by_author_id(xyz)
  book.update_attributes :author_id => record.id
end
2 голосов
/ 11 декабря 2011

, если self - это new_record? (не сохраняется в БД), вы не сможете назначить идентификатор таким образом, так как идентификатора еще нет. Однако должна быть возможность установить book.author на self.

Если это не ваш случай, вам следует немного задать свой вопрос.

0 голосов
/ 11 декабря 2011

При создании новой записи идентификатор еще не устанавливается, поскольку объект еще не находится в базе данных.Вы можете проверить это методом экземпляра new_record?().

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