我有一些查询,例如:
Assignment.where(date: "2019-07-01")
.includes(crews: :truck)
.where.not({ crews: {truck_id: nil}})
.count
#=> 2 records.
以下是包含的示例:
Assignment.where(date: "2019-07-01")
.includes(crews: :truck)
.where.not({ crews: {truck_id: nil}})
.distinct.pluck('trucks.name')
#=> ["Mercedes", "BMW"]
我想检查Assignment.where中的truck_id的唯一性(日期:“ 2019-07-01”) 为了将现有的truck_id附加到另一个Assignment对象,触发了验证。
会弹出一条消息,提示您无法添加,因为在.where
中指定的日期,这样的Truck对象已经附加到其中一个Assignment中。请告诉我如何正确实施。谢谢。
答案 0 :(得分:0)
如果您不想编写验证方法,仍然可以使用唯一性选项。请使用条件选项来确定应进行验证的行。
validates :truck_id, uniqueness: true, if: Proc.new { |assignment| assignment.on_specified_day? }