ROR + find_or_initialize_by_id方法功能?

时间:2011-06-23 06:50:47

标签: ruby-on-rails ruby ruby-on-rails-3

在模型中,我使用"find_or_initialize"来保存记录。我假设这个函数将搜索数据库中的记录,如果它发现没有动作,如果没有找到则保存记录。我是否正确?

但是,混乱:如果记录已经存在,并且其中一个字段得到更新,那么此函数是否会更新记录?

Is there any other method to resolve it ?

请建议我解决此问题...谢谢

1 个答案:

答案 0 :(得分:2)

find_or_initialize_by_...无法保存记录,只会使用提供的参数设置实例化新对象。

如果您希望自动保存记录(如果未找到),那么您应该使用find_or_create_by_...代替。

在任何一种情况下,如果您希望将对象保存到数据库,则对对象所做的任何更改都必须后跟save。这些方法都不会保存您在调用之后所做的任何事情。