我有一個稱爲時間表的模型,它有許多TimesheetRows。 TimesheetRow屬於一項工作。Rails:在建築物/保存對象之前檢查是否存在匹配某個條件的關聯?
class Timesheet < ActiveRecord::Base
has_many :timesheet_rows, inverse_of: timesheet
end
class TimesheetRow < ActiveRecord::Base
belongs_to :timesheet, inverse_of: timesheet_rows
belongs_to :job
end
在建設原木一個時間表對象,我想檢查是否對應於工作timesheet_row已經已經建成或沒有,如下所示。
timesheet = Timesheet.new()
if timesheet.timesheet_rows.exists?(job_id:n)
#Do something
else
timesheet.timesheet_rows.build(job_id:n)
end
我已經試過.exists(條件),.find?(:全部條件),.find_by_job_id(N)。凡(條件)等所有的數據庫查詢,因此不會這裏很有用。
我瀏覽了幾個小時,尋找一些神奇的方法,但找不到任何。真的,我只需要循環所有的關聯?
類似的question。
由於
爲什麼不在'TimesheetRow'模型的'job_id'上設置唯一性驗證?它適用於你的情況。 – Pavan
驗證檢查會在保存時間表時發生?我只是想構建時間表而不保存。 – Bot