Active Record中是否存在可确保您的查询不返回多条记录的内容?Rails Active Record方法确保查询返回单个记录?
这是基本功能是(道歉 - 这不是真正的代码只是足以给什么我正在寻找的想法):
Foo.where(:thing => 'this_should_be_uniq').single
def single(records)
if records.length > 1
raise # or maybe return nil or something like that
else
return records.first
end
end
从本质上讲,这将是防止意外假设(错误地)您的查询将始终返回单个记录。
谢谢!
你只想要一条记录还是第一条记录? – dax
'.limit(2)'然后检查长度?但通常我会在数据库中创建唯一的索引。 –
如果你正在尝试这样做是因为你的应用程序的业务逻辑规定这些事情中只有一件应该存在,那么你几乎肯定会更好地在数据库中强制执行该操作(使用唯一索引或触发器),而不是每次检查。更好地防止不良数据首先比编写代码,以便如果你得到不好的数据,你的应用程序不再工作。 – nickgrim