2017-02-21 55 views
1

我創建的用戶模型如下:轉換列值到字符串和顯示在JSON

class User < ActiveRecord::Base 

    self.table_name = 'User' 

end 

用戶表具有列狀態,它有欲在顯示狀態值的值0和1

json中的字符串。當用戶狀態爲0時,則顯示爲非活動狀態,並且在其爲1時處於活動狀態。

如何創建一種方法來執行此轉換?

我將在控制器中調用該方法,並將結果保存在實例變量中並在視圖中調用該實例變量。

感謝

做到這一點
+0

'self.table_name ='User'' - 這違反了一些約定:D –

+0

你能告訴我我做錯了什麼?我是新來的紅寶石在軌道上 – User7354632781

+1

當然。首先,按照約定,表名應該是模型名稱的複數形式,Rails將自動識別(只有當表名不符合上述要求時,您才需要'self.table_name')。所以要遵循約定,你的表名應該被稱爲'users'(lowecased,plural),然後你可以完全刪除'self.table_name' –

回答

0

一種方法是創建一個實例方法將返回所需的字符串:

def status_str 
    case status 
    when 0 
    "active" 
    when 1 
    "archived" 
    end 
end 

但更好的方法是使用一個ActiveRecord Enum

enum status: [ :active, :archived ] 

要使這項工作你的status列將需要是一個整數數據類型,而不是布爾值。有關更多信息,請參見ActiveRecord Query Guide under Enums