RAILS:如果存在则不创建新记录

时间:2016-05-20 13:19:26

标签: ruby-on-rails ruby-on-rails-5

基本上我需要的只是在创建新记录时执行的方法(可能是before_create过滤器),以检查具有这种标题的记录是否存在(不区分大小写)以及是否存在 - 返回结束记录而不创建新记录。如果不是 - 创建新记录。

这不是简单的exists?检查。我有9个关联的嵌套表单。我需要在创建记录和预先形成动作之前执行的方法,就像我在主题中描述的那样,所以我可以将该动作重新设置到每个相关模型

谢谢。

2 个答案:

答案 0 :(得分:1)

我认为你要找的是{{1}}。 See Documentation

由于您的数据模型看起来相当复杂,您可能希望将其与表单对象结合使用:https://blog.pivotal.io/labs/labs/form-backing-objects-for-fun-and-profit

如果这不是答案,请发布更多代码,我们可以帮助您完成。

答案 1 :(得分:0)

制作行动

@existing = Records.where('title = ?', params[:title]).first
if @existing.present?

record_path(@existing)

create action