Я пытаюсь написать приложение, которое позволяет пользователям регистрировать разные идентификационные номера в своей учетной записи с помощью формы. Идентификаторы имеют свою собственную модель и таблица выглядит следующим образом:Проверка рельсов формировать данные против ключа перед сохранением в базу данных
номерmysql> show columns in hp_ids;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| id_string | varchar(255) | YES | | NULL | |
| pin_number | int(11) | YES | | NULL | |
| user_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Идентификатор сохраняется под id_string
Хитрость заключается в том, что для того, чтобы зарегистрировать идентификатор, пользователь должен ввести свой соответствующий штифт чтобы доказать, что они имеют право зарегистрировать его.
Что я хочу делать, каждый раз, когда кто-то пытается зарегистрировать новую комбинацию id/pin, я бы хотел проверить ее на ключ от убедитесь, что они имеют правильную комбинацию. Я полагаю, что я бы создал новую модель под названием IdKey
или что-то в этом роде, но я не могу понять, как бы я сказал контроллеру проверить значения формы против этой второй модели до их сохранения.
Может ли кто-нибудь указать мне в правильном направлении?
Вы могли бы гипотетически применить к этому же процедуру, применяемую к паролям. Создайте хэш-значение комбинации id/pin и сохраните это; затем возьмите вход пользователя и создайте хэш из этих значений таким же образом, а затем сравните хэш для эквивалентности. Если это не так, можете ли вы просто выполнить поиск в таблице с использованием ввода пользователя, например, «HpId.where (id_string: params [: id_string], pin_number: params [: pin_number])'? –
@PaulRichter Спасибо за ответ! Я предполагаю, что такой поиск войдет в мой контроллер? – neanderslob
Да, или вы можете поместить его в метод модели (или даже область, если хотите быть фантазией). –