2014-02-27 22 views
0

我在我的应用二CRUDS:我如何将记录的ID保存在另一张桌子上?

Person : id, name, email 
Documents: id, name, number, person_id 

当我创建的CRUD一个新的人,我需要自动设置文档表person_id

我尝试用一​​个回调before_save,但我不知道怎么打发PARAMS以正确的方式。

我可以在PersonController直接办?

我该怎么做?

我想我不清楚我的问题。

People has_many :documents 
Documents belongs_to :people 

该文件不会被用户插入。这些文档将被一个rake任务插入,该任务将从外部源获取文档。

当耙任务尝试插入一个新的文档,该文档搜索的文件表为person_id。如果person_id不存在,则文档不会被保存。这是我的主要问题。

+0

这没有意义。当你创建一个人时,你是否也在创建一个文档? – meagar

+0

您需要自动在文档表的*所有行*上设置person_id? – giorgian

+0

我的事情我不清楚在我的问题。 人们有很多文件 文件belongs_to人。 用户不会插入这些文档。这些文件将被一个rake任务插入,该任务将从外部源获取文件。 当rake任务尝试插入新文档时,文档在文档表上搜索person_id。如果person_id不存在,则文档不会被保存。这是我的主要问题。 –

回答

0

我还不能评论,所以我把这个答案。如果我理解正确,当你创建一个人,你想自动创建一个关联的文件? 如果是这种情况,那么你可以尝试在你的人员模型中添加以下内容。

after_save :create_document 

def create_document 
    @document = Document.create(
     :person_id => self.id, 
     # any other needed code 
    ) 
end 

我用after_save的,因为这样你呼吁对已经产生,而不是试图创建的那个人之前,一个为person_id传递到文件的对象。这个解决方案可能不是最优雅的解决方案,但它可能有助于暂时解决问题,直到有人能够更好地回复。

+0

即时通讯使用此表单,并按预期工作。如果没有任何其他方式,我将继续使用这种方法 –

+0

很好用,我刚刚意识到,即使在人员被修改或更新时,这也会创建一个新文档,因此您可能需要添加一些验证以确保文档记录在调用.create()之前不存在 – SoSimple

相关问题