많은 TimesheetRows가있는 Timesheet라는 모델이 있습니다. TimesheetRow는 작업에 속합니다. 레일 : 특정 조건과 일치하는 것이 있으면 개체를 저장하기 전에/확인하십시오.
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) 등 데이터베이스의 모든 쿼리, 이야기 해봐 (조건), 따라서되지 않습니다 여기서 유용합니다.
나는 몇 시간 동안 마법의 방법을 찾아 보았지만 아무 것도 찾을 수 없었다. 정말로, 모든 협회를 통해 반복해야합니까?
a 유사 question.
감사
왜 'TimesheetRow' 모델에서'job_id'에 대해'유일성 유효성 검사 '를 설정하지 않으시겠습니까? 그것은 당신의 경우에 작동합니다. – Pavan
그 유효성 검사는 작업 표를 올바르게 저장하는 동안 발생합니다. 방금 저장하지 않는 작업 표를 작성하려고합니다. – Bot