0

给定以下示例代码:

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

Rails 中有类似“attr_name”方法的东西吗?

提前致谢

4

2 回答 2

1

你可以这样做(但也许问问自己为什么):

user.attributes.key(user.first_name)

...将"first_name"作为字符串返回。

于 2012-10-08T18:20:34.890 回答
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::Column:0x007fd6942b1840 @name="id", @sql_type="int(11)", @null=false, @limit=4, @precision=nil, @scale= nil, @type=:integer, @default=nil, @primary=true, @coder=nil, @collat​​ion=nil>, #< ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column:0x007fd694434348 @name="email", @sql_type="varchar(255)",...

要列出模型实例的属性,您可以采用 MrTheWalrus 的建议:User.first.attributes将返回第一个用户属性及其值的哈希值。

希望这会有所帮助。

于 2012-10-08T18:37:26.047 回答