2015-04-17 23 views
2

我有一個名爲User的模型,我將屬性參數中的用戶模型存儲爲一個散列。我已經宣佈此專欄作爲我的用戶模型中的商店,而沒有任何訪問者,我正在以@user.params的身份訪問它,同時將數據保存到數據庫中它工作得很好。但是,我必須按特定標準檢索數據。匹配ActiveRecord ::在數據庫中存儲列

說我有存儲使用參數字段中輸入用戶對象爲{檢查:真正} 及其他由{檢查:真正}

現在我要檢索具有用戶PARAMS:{檢查:真正}

我使用的查詢是:

User.where(params: {"checked" => true}); 

這被投擲的錯誤爲:

INTERNAL ERROR!!! SQLite3::SQLException: no such column: params.checked: SELECT "users".* FROM "users" WHERE "params"."checked" = 't' 

我搜索了一大堆關於比較數據庫中的兩個商店領域,但還沒有找到相關的東西。

在此先感謝

+0

你能提供一些這個「params」字段的更多細節 - 它是一個序列化字段嗎?實際存儲在數據庫中的這個字段的對象是否在你的例子中? –

+0

@sharvy我可以訪問它沒有任何問題 –

+0

@max是的,它是一個序列化的字段我已經使用了活躍的記錄存儲,請看看:[鏈接](http://api.rubyonrails.org/classes/ActiveRecord /Store.html) –

回答

0
class User 
    scope :score, -> { 
    where :score -> true 
    } 
end 

控制器..

@users = params[:checked]? ? User.score : User.all 
0

如果你正在使用MySQL,你不能做一個直接的方式查詢。 store只是一個Hash它保存並加載後被序列化和反序列化。當您使用store時,您幾乎無法加載和保存數據。

您可以嘗試使用LIKE(不能保證它是否會工作或沒有):

User.where('params LIKE ?', '%checked: true%') 

我建議不要使用store(連載)爲您需要查詢上的任何數據。

PostgreSQL可以存儲和搜索哈希/ json - 查看hstore