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