次のサンプルコードを考えます。
@user = User.last
user.first_name.attr_name #this should return "first_name"
Railsに「attr_name」メソッドのようなものはありますか?
前もって感謝します
次のサンプルコードを考えます。
@user = User.last
user.first_name.attr_name #this should return "first_name"
Railsに「attr_name」メソッドのようなものはありますか?
前もって感謝します
あなたはこれを行うことができます(しかし多分あなた自身に理由を自問してください):
user.attributes.key(user.first_name)
..."first_name"
文字列として返されます。
モデルの属性を一覧表示するには、を使用できますcolumn_names
。
たとえば、User.column_names
次のようなものを返します。
["id"、 "email"、 "encrypted_password"、 "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" updated_at」、「name」、「confirmation_token」、「confirmed_at」、「confirmation_sent_at」、「account_id」、「account_primary」]
次に、この配列を反復処理できます。たとえば、User.column_name[1]
を返し"email"
ます。
各属性の詳細を表示するには、を使用しますcolumns
。の出力は次のUser.columns
ようになります。
[#<ActiveRecord :: ConnectionAdapters :: Mysql2Adapter :: Column:0x007fd6942b1840 @ name = "id"、@ sql_type = "int(11)"、@ null = false、@ limit = 4、@precision = nil、@ scale = nil、@ type =:integer、@ default = nil、@ primary = true、@ coder = nil、@ collation = nil>、#<ActiveRecord :: ConnectionAdapters :: Mysql2Adapter :: Column:0x007fd694434348 @ name = "email"、 @ sql_type = "varchar(255)"、..。
モデルのインスタンスから属性を一覧表示するには、MrTheWalrusの提案をUser.first.attributes
使用できます。最初のユーザーの属性のハッシュとその値を返します。
これがお役に立てば幸いです。