2014-06-17 121 views
0
的方法

讓我們說一個人表/模型編號和名稱:Rails4 - 添加到結果

class Person < ActiveRecord::Base 

    def height 
    return '10 feet tall' 
    end 

end 

如何能讓它在結果中,這樣,而不是這個返回「高度」的方法:

=> #<Person id: 1, name: "bob"> 

它是這樣的:

=> #<Person id: 1, name: "bob", height: "10 feet tall"> 

回答

0

您可以使用Ruby類通過attr_accessor方法屬性。但它不會是數據庫中的真正領域。例如,你需要場高度使用這樣的事情

class Person < ActiveRecord::Base 

    attr_accessor :height 
    def height 
    return @height 
    end 
    def height=(val) 
    @height = val 
    end 
end 

和(如果你有個人ID爲1爲例),你可以使用它像

Person.find(1).height 
+0

你好,感謝您抽出時間,但這個例子對我來說不起作用。我仍然沒有看到結果中返回的「高度」鍵/值。 – oprogfrogo

+0

你可以在控制檯中看到真正的數據庫字段 - 但是你想添加類似虛擬字段的東西 - 所以當你從數據庫中獲取記錄時,你不能從模型中看到方法,但是你可以像從DB-Person.first中獲取對象之後那樣使用它們。 my_method。也許這個答案對你有用http://stackoverflow.com/questions/1289557/how-do-you-discover-model-attributes-in-rails –

+0

也許我應該給出更多的細節,找到的結果將是一個json對另一個調用此應用程序的響應。所以它需要擁有json對象中的所有鍵/值。 – oprogfrogo

0

什麼似乎工作就是下面這樣:

attr_accessor :height 

def attributes 
    super.merge('height' => self.height) 
end 

def height 
    '10 feet tall' 
end 

有沒有更好的最小代碼方式來做到這一點?