[英]How to get all values of an object in ActiveRecord in Rails?
One can use column_names
to get all the columns of a table, but what if one would like to know all the values of a particular instance in ActiveRecord.可以使用column_names
来获取表的所有列,但是如果想知道 ActiveRecord 中特定实例的所有值怎么办。
For example,例如,
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", "tel", "interests", "admin_status", "created_at", "updated_at", "city_id", "profile_image_file_name", "profile_image_content_type", "profile_image_file_size", "profile_image_updated_at"]
User.first
=> #<User id: 1, email: "aatir@jpl.com", tel: "+923223333333", interests: "Hi, I'm interested in coding.", admin_status: "download", created_at: "2016-08-16 22:38:05", updated_at: "2016-08-16 22:38:05", city_id: 2, profile_image_file_name: "Screen_Shot_2016-07-02_at_4.41.32_PM.png", profile_image_content_type: "image/png", profile_image_file_size: 324372, profile_image_updated_at: "2016-08-16 22:38:04">
When first
method is called, it returns key-value pairs.当first
方法被调用时,它返回键值对。 What I want is to have only values, is there a single method in ActiveRecord that can do this for us?我想要的是只有值,ActiveRecord 中是否有一个方法可以为我们做到这一点?
You can also use attributes
method to get it您也可以使用attributes
方法来获取它
User.first.attributes.values
User.first.attributes
will return you hash representation of user
object User.first.attributes
将返回user
对象的哈希表示
User.first.attributes { "id" => 1, "email" => "aatir@jpl.com", "tel" => "+923223333333", "interests" => "Hi, I'm interested in coding.", "admin_status" => "download", "created_at" => "2016-08-16 22:38:05", "updated_at" => "2016-08-16 22:38:05", "city_id" => 2, "profile_image_file_name" => "Screen_Shot_2016-07-02_at_4.41.32_PM.png", "profile_image_content_type" => "image/png", "profile_image_file_size" => 324372, "profile_image_updated_at" => "2016-08-16 22:38:04" }
values
will return you the values in the Array
values
将返回Array
的值
User.first.attributes.values [1, "aatir@jpl.com", "+923223333333", "Hi, I'm interested in coding.", "download", "2016-08-16 22:38:05", "2016-08-16 22:38:05", 2, "Screen_Shot_2016-07-02_at_4.41.32_PM.png", "image/png", 324372, "2016-08-16 22:38:04"]
I'm extending @deepak's answer to assure that the order remains same as it is for column_names
, and this is how, I achieved it:我正在扩展@deepak 的答案,以确保顺序与column_names
的顺序保持相同,这就是我实现它的方式:
User.first.attributes.values_at *User.column_names
To get just the values, irrespective of the order:无论顺序如何,只获取值:
User.first.attributes.values
只是您可以将 activerecord 转换为 Hash 然后获取如下值:
User.first.as_json.values
Object.first.attributes.values
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.