【问题标题】:Checking rails form data against key before saving to database在保存到数据库之前根据密钥检查 Rails 表单数据
【发布时间】: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


【解决方案1】:

这听起来像是 conditionalcustom 验证。

我可能误解了您的问题,但pin_number 是预先存在的值吗?如果是这样,我猜它应该存在于不同的表中(可以在您的自定义验证期间查询)。

【讨论】:

  • 您好 TK,感谢您的回复。你说得对,引脚是预先存在的值。我将查看自定义验证,看看我是否可以用它做点什么。对于这种特殊类型的自定义验证,您知道那里有什么好的文档吗?再次感谢。
  • 您好,如果您还没有,我会查看我的答案中的链接(来自 Guides 的条件和自定义验证解释:edgeguides.rubyonrails.org/active_record_validations.html)。从那里我会去谷歌和 SO...
  • 成功了。谢谢老兄。
猜你喜欢
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
相关资源
最近更新 更多