2013-12-26 2 views
0

У меня есть следующие модели:Проверка существующих ассоциации «belongs_to» в Rails 4

class Order < ActiveRecord::Base 
    validates :user, :order_status, :delivery_type, presence: true 
    belongs_to :user 
end 

Перед созданием нового заказа мне нужно проверить, если пользователь с user_id из Params существует; Я могу получить любой user_id, и это может быть для несуществующего пользователя. Можно ли проверить существующие проверки модели, или я должен сделать это вручную? Благодарю.

+0

Я считаю, что вам больше нужна проверка, поскольку вы уже проверяете присутствие пользователя, так что если вы каким-то образом передадите user_id: 256 (предположим, что 256 не существует для пользователя), чем вы увидите сообщение об ошибке Пользователь может ' t быть пустым, поскольку он проверяет присутствие пользователя, а не user_id –

ответ

0

Вы можете использовать validates_associated для проверки связанного объекта следующим образом:

class Order < ActiveRecord::Base 
    validates :user, :order_status, :delivery_type, presence: true 
    belongs_to :user 

    validates_associated :user 
end 

Обратите внимание, что вы не должны удалить проверку presence даже если добавить validates_associated :user. Пожалуйста, смотрите следующую записку от documentation:

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

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