我不知道如何解决这个问题。
我遇到过这个问题3次,每次我把它放在我的待办事项列表中,但即便如此,我也试图找到解决方案。
例如,
我正在尝试使用此示例的动态变量创建查询;
User.search(first_name_start:' K')
这个例子中有3个参数;
1)first_name - 我的模型属性 2)开始 - 查询类型(开始/结束/续) 3)' 3' - 值
我能够使用静态符号创建动态ActiveRecord,但我想如何进行动态输入
提前致谢
编辑:附加信息
让我给你看一些伪代码
varArray.each_with_index |x,index|
queryString=varArray[i]+"_"+filterArray=[i] #lets say varArray[i], this will be first_name, an actual model attribute/a column in my db
#and filterArray like /start/end/with a filter type
#and finally valArray a string value like 'geo' or 'paul'
User.where(queryString valArray[i]).result
我尝试使用send(变量),但这也没有帮助我,所以我不应该如何继续,
答案 0 :(得分:2)
这是用于定义哈希的新花式Ruby 1.9语法不会削减它的少数情况之一。您必须使用传统的hashrocket(=>
),它不仅可以指定符号,还可以指定任意值作为哈希键:
column = "#{first_name}_size_#{query_type}".to_sym
User.where( column => value )
AFAIK,ActiveRecord能够接受字符串而不是符号作为列名,因此您甚至不需要致电to_sym
。