我的应用程序中有两个CRUD:
Person : id, name, email
Documents: id, name, number, person_id
当我在CRUD上创建新人时,我需要在Documents表上自动设置person_id
。
我尝试使用回调before_save
,但我不知道如何以正确的方式传递参数。
我可以直接在PersonController
上填写
我怎么能这样做?
我想我的问题并不清楚。
People has_many :documents
Documents belongs_to :people
用户不会插入文档。这些文档将由一个rake任务插入,该任务将从外部源获取文档。
当rake任务尝试插入新文档时,文档会搜索文档表中的person_id。如果person_id
不存在,则不保存文档。这是我的主要问题。
答案 0 :(得分:0)
我还不能发表评论所以我正在回答这个问题。如果我理解正确,当您创建一个人时,您想自动创建关联文档? 如果是这种情况,那么您可以尝试在您的人员模型中添加以下内容。
after_save :create_document
def create_document
@document = Document.create(
:person_id => self.id,
# any other needed code
)
end
我使用了after_save,因为这样你就可以调用一个已创建的对象,而不是在创建该人之前尝试将person_id传递给文档。这个解决方案可能并不是最优雅的解决方案,但它可能暂时有所帮助,直到有人可以用更好的方式回复。