Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby从查询字符串创建对象_Ruby On Rails_Ruby_Query String - Fatal编程技术网

Ruby on rails Ruby从查询字符串创建对象

Ruby on rails Ruby从查询字符串创建对象,ruby-on-rails,ruby,query-string,Ruby On Rails,Ruby,Query String,我正在使用一个新的Rails项目&一个使用adapter:Oracle\u-enhanced的旧的oracledb。希望能够根据可用于搜索的信息/字段对数据库进行动态搜索 我正试图从 http://www.abc.com/order/show?acct_num=a123&po_num=789z 并创建一个对象,例如 class Order attr_reader :customer_name, :acct_num, :order_date, :po_num, :qty. end

我正在使用一个新的Rails项目&一个使用adapter:Oracle\u-enhanced的旧的oracledb。希望能够根据可用于搜索的信息/字段对数据库进行动态搜索

我正试图从

http://www.abc.com/order/show?acct_num=a123&po_num=789z
并创建一个对象,例如

class Order
  attr_reader :customer_name, :acct_num, :order_date, :po_num, :qty.
end
我有请求中的参数。query\u参数哈希表

现在,如果我走错了路,我想做的是使用查询字符串,并能够找到所有订单,其中acct_num_in_model=acct_num_from_query_string和po_num_from_model=po_num_from_query_string等。如果某些内容是空的,例如po_number,则返回与acct_number匹配的所有内容,如果acct_num为空,则返回所有匹配的内容那个阿宝。我期待着以下几点:

abc.com/order/show?acct_num=a123&po_num=789z
返回acct_num=a123和po_num=789z的所有订单

abc.com/order/show?账号=a123 返回acct_num=a123的所有订单

abc.com/order/show?po_num=789z
返回订单编号为789z的所有订单

abc.com/order/show?po_num=789z&qty=6

如果您想使用rails,要返回订单数量为789z&qty=6的所有订单,我建议:

QUERY_WHITELIST = ['po_num','qty','acct_num']
Order.find :all, :conditions => params.slice(*QUERY_WHITELIST)


取决于您的Rails版本。

如果您想使用Rails,我建议:

QUERY_WHITELIST = ['po_num','qty','acct_num']
Order.find :all, :conditions => params.slice(*QUERY_WHITELIST)


取决于您的Rails版本。

您能否更新您的问题并说明如何访问您的数据库?是否为Rails、Sequel等?只是为了避免一些人在不需要时使用基于Rails的解决方案进行答复。您能否更新问题并说明如何访问数据库?是否为Rails,Sequel等?只是为了避免一些人在可能不需要时使用基于Rails的解决方案进行回复。当我使用此解决方案时,我得到ArgumentError Unknown key(s):conditions(这是错误拼写,不是我的条件)。我相信这是因为如果我做params.inspect,我会得到列表中包含的“action”=>“show”,“controller”=>“order”}。因此,我将params.slice(*QUERY_WHITELIST)更改为request.QUERY_string.slice(*QUERY_WHITELIST),因为request.QUERY_string仅包含querystring中的参数,但这给了我OrderController中的TypeError#show无法将字符串转换为整数。切片方法“过滤”参数,因此结果不再包含“动作”或“控制器”。然而,query_string是一个字符串-您不想使用它(除非您想处理参数解析和取消跳过)。我会试着复制。稍后再查看。您使用什么数据库接口?我的决定是为了ActiveRecord。。。你确定你在代码中正确拼写了“条件”吗?有时也会发生在我身上。这是活动记录,你绝对正确!我把条件说错了。哇,太谢谢你了!!我认为它完全正确。我喜欢我如何做order/show?acct_num=xyz或order/show/acct_numb=xyz&po_num_as_int=1234,它根据那里的内容动态创建查询,甚至知道它应该是字符串还是数字。非常感谢。非常感谢。非常感谢。对于数据库查询,与字符串“123”或整数123进行比较并不重要。。。两者都匹配。所以rails无论如何都会传递字符串(从params散列中)。当我使用这个解决方案时,我得到ArgumentError未知键:conditons(这是错误拼写,而不是我的条件)。我相信这是因为如果我做params.inspect,我会得到列表中包含的“action”=>“show”,“controller”=>“order”}。因此,我将params.slice(*QUERY_WHITELIST)更改为request.QUERY_string.slice(*QUERY_WHITELIST),因为request.QUERY_string仅包含querystring中的参数,但这给了我OrderController中的TypeError#show无法将字符串转换为整数。切片方法“过滤”参数,因此结果不再包含“动作”或“控制器”。然而,query_string是一个字符串-您不想使用它(除非您想处理参数解析和取消跳过)。我会试着复制。稍后再查看。您使用什么数据库接口?我的决定是为了ActiveRecord。。。你确定你在代码中正确拼写了“条件”吗?有时也会发生在我身上。这是活动记录,你绝对正确!我把条件说错了。哇,太谢谢你了!!我认为它完全正确。我喜欢我如何做order/show?acct_num=xyz或order/show/acct_numb=xyz&po_num_as_int=1234,它根据那里的内容动态创建查询,甚至知道它应该是字符串还是数字。非常感谢。非常感谢。非常感谢。对于数据库查询,与字符串“123”或整数123进行比较并不重要。。。两者都匹配。所以rails无论如何都会传递字符串(从params散列中)。