您是否必须将查询字符串参数转换为数据类型?

时间:2014-07-06 08:50:52

标签: ruby ruby-on-rails-3 ruby-on-rails-4

我想知道您是否必须将某些查询字符串或post params转换或转换为特定数据类型才能在控制器中使用它们。例如,如果我将categoryid(数据库中的一个整数)查询字符串参数传递给控制器​​,我是否必须使用to_i方法将其转换为我的控制器中的整数,或者Ruby是否自动执行此操作?另外,如何使用rails控制台测试查询字符串参数值及其数据类型?在测试我的应用时,我无法通过查询字符串或发布参数来说明发生了什么。

1 个答案:

答案 0 :(得分:2)

通常,Rails(尤其是ActiveRecord)相对容忍传递的数据类型。例如,这两行都将返回ID为1的用户:

User.find(1)
User.find('1')

对于更复杂的查询也是如此:

User.where({ id: '1' })
User.where('id = ?', '1')

参数以字符串形式传递给控制器​​,这意味着您只需拨打User.find(params[:id])即可,而无需拨打params[:id].to_i

如果要在Rails控制台中检查变量的类,则可以在对象上调用.class。例如:

[1] pry(main)> "1".class
=> String
[2] pry(main)> 1.class
=> Fixnum

我希望有所帮助。