如何在另一个表上保存记录的ID?

时间:2014-02-27 15:24:12

标签: ruby-on-rails ruby-on-rails-4

我的应用程序中有两个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不存在,则不保存文档。这是我的主要问题。

1 个答案:

答案 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传递给文档。这个解决方案可能并不是最优雅的解决方案,但它可能暂时有所帮助,直到有人可以用更好的方式回复。