У меня есть модель с именем Profile, которая принадлежит пользователю, поэтому для отслеживания базы данных есть «user_id». В локальном интерфейсе администратора, который я сделал для этой модели, я хотел предоставить гибкость, позволяющую администратору вводить имя пользователя в поле на экране редактирования, а затем разрешать это пользователю_id для сохранения в контроллере.Как проверить, что ассоциация действительна
Однако вопрос в том, как я могу проверить, что имя пользователя имеет действительный возврат? Я обнаружил, что в ActiveRecord :: Validation нет метода проверки существования ассоциации. Как вы справитесь с такой ситуацией?
Обновление: что я хочу сделать, это проверить, что поле имени пользователя в форме действительно является реальным пользователем, после чего я могу сохранить этот user_id обратно в редактируемый администратором профиль. Здесь «return» означает возвращаемый объект пользователя.
Как насчет того, является ли user_id необязательным? Который здесь профиль не может принадлежать никому. – itsnotvalid
Существует много способов сделать это. Возможно, вы захотите изменить имя пользователя =(), чтобы вернуть 0, если имя пользователя не существует, а не nil. В этом случае вы можете проверить, сохраняет ли значение == 0 и делает недействительным объект. validate: secure_username_exists def username = (значение) self.user_id = User.find_by_username (value) || 0 конец защищен Защиту ensure_username_exists если user_id == 0 # ноль допускается ошибки.add (: user_id, «Имя пользователя не существует») return false конец конец Это всего лишь одно возможное решение. –
Извините. Я написал пример, но кажется, что комментарии не могут содержать код. : S –