1

我希望始终让我的模型在保存之前查看对象是否存在。如果是这样,那么不是创建一个新对象,而是使用现有对象。

是否可以将其直接添加到我的模型的 before_save ActiveRecord 类中?

我相信这是不可能的,因为你无法改变自我的价值。

4

2 回答 2

1

我认为您不能将其添加到before_save. 如果您创建对象的地方只有几个,那么您可以手动指定find_or_create(or find_or_initialize) 而不是仅使用createornew

如果您总是希望它发生,您可以重写该new方法以使其表现得像find_or_initialize

于 2012-06-27T17:09:42.470 回答
1

ActiveRecord 已经提供了这个功能。您可以执行以下操作:

User.find_or_initialize_by_email('some@email.com')

这将返回数据库中的用户(如果找到)或将电子邮件设置为传递参数的新用户。然后,您可以像其他方式一样使用该对象,并在完成后调用 save (这将根据需要更新或创建)。

有关http://api.rubyonrails.org/classes/ActiveRecord/Base.html的更多信息(在页面中搜索 find_or_initialize_by_)

于 2012-06-27T17:09:53.860 回答