如何知道Rails中模型属性的名称

时间:2012-10-08 18:05:20

标签: ruby-on-rails ruby-on-rails-3

给出以下示例代码:

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

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

提前致谢

2 个答案:

答案 0 :(得分:1)

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

user.attributes.key(user.first_name)

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

答案 1 :(得分:0)

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

例如,User.column_names返回类似:

的内容
  

[“id”,“email”,“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“,”name“,”confirmation_token“,”confirmed_at“,”confirmation_sent_at“,”account_id“,”account_primary“]

然后您可以遍历此数组。例如,User.column_name[1]将返回"email"

要查看每个属性的更多详细信息,请使用columnsUser.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将返回第一个用户属性的散列及其值。

希望这有用。