【发布时间】:2014-12-05 23:58:58
【问题描述】:
我正在尝试编写一个应用程序,允许用户通过使用表单将不同的 ID 号码注册到他们的帐户中。 ids有自己的model,表格如下:
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号保存在id_string下
诀窍在于,为了注册一个 id,用户必须输入其对应的 pin 以证明他们有权注册它。..
我想要做的是, 每次有人尝试注册一个新的 id/pin 组合时,我都会根据某种键检查它,以确保他们拥有正确的组合.我想我会创建一个名为 IdKey 或类似名称的新模型,但我不知道如何告诉控制器在保存表单值之前根据第二个模型检查表单值。
谁能指出我正确的方向?
【问题讨论】:
-
您可以假设地对密码应用相同的过程。生成 id/pin 组合的哈希值并保存;然后获取用户的输入并以相同的方式从这些值生成散列,然后比较散列的等效性。除此之外,您能否简单地使用用户输入在表格上进行查找,例如
HpId.where(id_string: params[:id_string], pin_number: params[:pin_number])? -
@PaulRichter 感谢您的回复!我假设这样的查找会进入我的控制器?
-
是的,或者你可以把它作为模型的一个方法(如果你想花哨的话,甚至可以是一个范围)。
标签: ruby-on-rails forms validation ruby-on-rails-4