【发布时间】:2016-12-22 08:42:34
【问题描述】:
我有一个接受 Bill 模型输入的表单。该表单具有自动完成功能,可为您提供在 Transactions 模型中创建的动态数组中的单词。我想做一个只允许数组中的单词作为输入的验证。我找到了验证 validates_inclusion_of 但我不确定这是否是正确的验证以及如何链接模型中的验证以检查为自动完成创建的数组。
我的 Transactions 控制器中的路由是 autocomplete_names
如何在我的 Transactions 控制器中根据路由对输入进行验证检查。
这是我目前进行的验证,还是我在错误的上下文中使用它并需要进行自定义验证?
validates_inclusion_of :my_bill, in: [Transaction::autocomplete_names], :allow_blank => true, message: "Bill name not found in your account, please try again"
这是错误的并且不起作用,所以我需要弄清楚在“:in”中放入什么来进行验证
【问题讨论】:
-
你使用的是什么版本的 Rails?
-
我使用的是 Rails 4.0.10
-
当你在 Rails 控制台中输入
Transaction::autocomplete_names时,输出是什么? -
错了,autocomplete_names 是我的 Transaction 控制器中的一个动作。我需要它在字符串数组中查找子字符串。因此,例如 my_bill 可以是“directv”,它会通过我的 Transaction 模型 trans_name 字段进行查看,该字段是一个字符串数组,并检查它们是否是与该输入匹配的任何子字符串。我使用控制器操作在数组上调用我的自动完成功能,并认为我可以在验证中使用相同的操作。但我可能错了。
-
在您的验证中,
Transaction::autocomplete_names命令正在您的Transaction模型中查找函数。您可以在模型中编写一个函数,从数据库列:trans_name输出一个数组。
标签: ruby-on-rails validation autocomplete mongoid