проверка записи уникальности в отношении ассоциации - PullRequest
0 голосов
/ 01 июля 2019

У меня есть запрос, например:

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"] 

Я хочу проверить уникальность truck_id в Assignment.where (date: "2019-07-01") И чтобы присоединить существующий truck_id к другому объекту Назначения, была запущена проверка.

И всплывает сообщение, которое вы не можете добавить, так как такой объект Truck уже прикрепленна одно из Заданий в день, указанный в .where

Пожалуйста, скажите мне, как правильно его выполнить.Спасибо.

1 Ответ

0 голосов
/ 01 июля 2019

Если вы не хотите писать метод проверки, вы все равно можете использовать параметры уникальности. Используйте условную опцию, чтобы указать, какие строки должны выполнять проверку.

validates :truck_id, uniqueness: true, if: Proc.new { |assignment| assignment.on_specified_day? }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...