2015-10-01 5 views
1

Я пытаюсь выполнить проверку для полиморфной ассоциации, где я только хочу, чтобы она запускалась на определенный тип. Какой пользователь.проверить уникальность полиморфной ассоциации

Я хочу что-то вроде этого:

validates :room_id, uniqueness: { scope: tokenable_id if tokenable type is User } 

как я идти об этом. Другой тип - Клиент. Который я хочу дать возможность быть несколькими.

ответ

0

Я думаю, что вы можете использовать Conditional Validation

Иногда это будет иметь смысл проверить объект только тогда, когда данный предикат выполняется. Вы можете сделать это, используя опции: if и: except , которые могут принимать символ, строку, Proc или массив. Вы, , можете использовать опцию: if, если вы хотите указать, когда должна произойти проверка . Если вы хотите указать, когда валидация не должна быть , то вы можете использовать опцию: except.

5,1 Использование символа с: если и: если

Вы не можете ассоциировать: если и: если не варианты с символом , соответствующего имени метода, который будет вызван прямо перед проверкой бывает. Это наиболее часто используемый вариант.

class Order < ActiveRecord::Base 
    validates :room_id, uniqueness: { scope: :tokenable_id }, if: :is_right_type? 

    # or maybe this will work 
    validates :room_id, uniqueness: { scope: :tokenable_id }, if: :user? 

    def is_right_type? 
    type == "user" 
    end 
end 
+0

Обратите внимание, что вы можете дать параметр строкового ': if', например, 'id:" type == 'user' "' – eirikir

Смежные вопросы