2011-12-11 40 views
0

我有一些代码在我的项目模型(非常松散)像这样:自我ID模型,记录被创建之前 - 轨道3

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

self.id似乎并没有被不过,当设置创造新的纪录...任何想法?

回答

4

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 
0

一个简单的回调。您可以使用实例方法new_record?()进行测试。

2

如果selfnew_record?(未保留在数据库中),那么您将无法像这样分配id,因为还没有id。但是,应该可以将book.author设置为self

如果这不是你的情况,你应该考虑指定你的问题。