2012-10-08 14 views
0

一個模型屬性的考慮下面的示例代碼名稱:如何知道的Rails

@user = User.last 
user.first_name.attr_name #this should return "first_name" 

有什麼樣Rails中的「attr_name」的方法?

在此先感謝

回答

1

你可以這樣做(但也許問自己爲什麼):

user.attributes.key(user.first_name) 

...將返回"first_name"爲一個字符串。

+2

更短的版本:''attributes.key(value)' – MrTheWalrus

+0

WOW。我從來不知道這一點。謝謝! –

+0

實際上'user.attributes.key(user.first_name)'對我來說確實有效,但'attributes.key(value)'不是。無論如何,在這種情況下, –

0

要列出模型的屬性,您可以使用column_names

例如,User.column_names回報是這樣的:

[ 「ID」, 「電子郵件」, 「encrypted_pa​​ssword」, 「reset_password_token」, 「reset_password_sent_at」, 「remember_created_at」, 「sign_in_count」, 「current_sign_in_at」 「last_sign_in_at」, 「current_sign_in_ip」, 「last_sign_in_ip」, 「created_at」, 「的updated_at」, 「姓名」, 「confirmation_token」, 「confirmed_at」, 「confirmation_sent_at」, 「ACCOUNT_ID」, 「account_primary」]

然後你可以遍歷這個數組。例如,User.column_name[1]將返回"email"

要查看每個屬性的更多詳細信息,請使用columns。的User.columns輸出應該是這樣的:

[#<的ActiveRecord :: ConnectionAdapters :: Mysql2Adapter ::柱:0x007fd6942b1840 @名稱= 「ID」,@ sql_type = 「INT(11)」,@空= false,@ limit = 4,@ precision = nil,@ scale = nil,@ type =:integer,@ default = nil,@ primary = true,@ coder = nil,@ collat​​ion = nil>,#< ActiveRecord :: ConnectionAdapters :: Mysql2Adapter ::柱:0x007fd694434348 @名字= 「電子郵件」,@ sql_type = 「VARCHAR(255)」,...

要列出從您可以MrTheWalrus的建議模型的實例屬性:User.first.attributes會返回第一個用戶的attribu的散列以及他們的價值觀。

希望這是有幫助的。