我想動態設置表名作爲Activerecord的where子句中的符號。動態地將表名從字符串設置爲像「表」的符號:{status:0}
它適用於使用脂肪允許。
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
我怎樣才能做到這一點? 感謝您的幫助。
首先閱讀['SQL injection'(http://guides.rubyonrails.org /security.html#sql-injection) –
我不直接將params放入方法中。我通過def類型的私人方法清理它們 – Yoshi