给出以下示例代码:
@user = User.last
user.first_name.attr_name #this should return "first_name"
在Rails中有类似“attr_name”的方法吗?
提前致谢
答案 0 :(得分:1)
你可以这样做(但也许会问问自己为什么):
user.attributes.key(user.first_name)
...将"first_name"
作为字符串返回。
答案 1 :(得分:0)
要列出模型的属性,您可以使用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”,“created_at” “,”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
将返回第一个用户属性的散列及其值。
希望这有用。