2014-05-03 15 views
0

我有一個psql表,其中包含一個名爲params的列,其中包含一個散列。下面是我的情景:帶有散列值的列現在是別名後的字符串


當我做下面的查詢......

game = Game.select('games.params').where(id: 123).first 

...它打印出來......

p game.params.class # => !ruby/class 'ActiveSupport::HashWithIndifferentAccess 

現在我可以繼續訪問正常情況下返回的散列值內的值


但是,當我給列名的別名在我的查詢(這裏是我的問題)...

game = Game.select('games.params as parameters').where(id: 123).first 

...它打印出來......

p game.parameters.class # => !ruby/class 'String' 

我需要能夠在我的查詢中更改列名,然後訪問哈希中的值,但是當我嘗試執行p game[:time]時,它被視爲字符串。

我是Ruby和Ruby on Rails的新手,所以這可能非常簡單,但我現在處於死衚衕。

+0

分享你的模型,你是想加入。此外,您嘗試檢索的數據是什麼,共享確切的查詢? –

回答

0

怎麼樣這個查詢:

g = Game.find 123 
g.params 
+0

不,我需要能夠通過使用'where'('params as somename')將列名更改爲除'params'之外的任何其他名稱' – rcorrie

+0

我不知道我是否理解您,您想更改您的列名數據庫還是在Rails模型表示中?你想通過例如訪問參數。 'game.parameters'? – kasi

+0

後者。我確切的情況是,我加入了兩個表,每個表都有一個具有相同名稱的列,所以我需要在查詢(別名)中更改列名。但是當我這樣做時,散列會變成一個字符串。 – rcorrie