我想动态地将表名设置为Activerecord的where子句中的符号。
使用脂肪允许效果很好。
def find
@users.includes(type(@params[:filter])).where(:"#{@review}" => { status: 10 })
end
private
def type(type)
case type
when 'article_review'
@review = Review.table_name # "reviews"
:reviews # set as incluedes(:reviews)
when other_name
other definition
end
end
但我不想使用胖允许,我希望def发现如下所示
def find
@users.includes(type(@params[:filter])).where("#{@review}": { status: 10 })
end
我该怎么做? 谢谢你的帮助。
答案 0 :(得分:0)
您应该使用to_sym
方法将字符串转换为符号。
这是我的输出
2.1.5 :007 > a = "table"
=> "table"
2.1.5 :008 > a.to_sym
=> :table
了解更多信息http://apidock.com/ruby/String/to_sym
试试这个
@users.joins(type(@params[:filter])).where("#{@review}.status = 10")