[英]issues related find_by_sql in rails
我正在使用Rails 4,需要在活動記錄模型中使用find_by_sql,現在我面臨兩個嚴重的問題。 第一個是它是否給我#Employee:0x0000000b2a1718作為結果,這並沒有給我特定的數據。 我的模型名稱是Employee,而批發名稱是employee。 我正在使用pg。
請告訴我有什么解決辦法。
第二個問題是如何在find_by_sql中使用的sql查詢中編寫任何rails變量。 例如,我要執行find_by_sql(“從員工那里選擇名字,其中id = @ var”),其中@var是一個ruby變量。
我需要執行的實際查詢是使用find_by_sql從員工那里選擇comapact_string之類的名字,例如%@ var%。
進行查詢時有一定程度的自定義。 最簡單的形式是可以使用內置查找器的位置:
Employee.where(id: @var).pluck(:first name)
這將直接匹配,如果找到,則為您提供first_name
列值。 pluck
不會產生任何模型。
如果要與LIKE
進行近似匹配,則可以更正式地寫出WHERE
子句:
Employee.where('id LIKE ?', "%{@var}%").pluck(:first_name)
很少需要使用find_by_sql
來寫出整個查詢,但是如果這樣做,則必須對輸入到查詢中的數據非常謹慎。 強烈建議盡可能使用占位符值,如果絕對必須繞過它,則不管源如何,都應轉義所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.