У меня есть некоторый код в моей модели Item (очень свободно), например, такой:
def author_id=(xyz) book = Book.find_by_author_id(xyz) book.author_id = self.id end
self.id, похоже, не настроен при создании новой записи ... Есть идеи?
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
, если self - это new_record? (не сохраняется в БД), вы не сможете назначить идентификатор таким образом, так как идентификатора еще нет. Однако должна быть возможность установить book.author на self.
self
new_record?
book.author
Если это не ваш случай, вам следует немного задать свой вопрос.
При создании новой записи идентификатор еще не устанавливается, поскольку объект еще не находится в базе данных.Вы можете проверить это методом экземпляра new_record?().
new_record?()