Ruby on rails Rails:为什么user.attributes.keys只适用于新创建的用户,而不是我找到的(find_by)或拉取的用户。在哪里?

Ruby on rails Rails:为什么user.attributes.keys只适用于新创建的用户,而不是我找到的(find_by)或拉取的用户。在哪里?,ruby-on-rails,ruby-on-rails-4,activerecord,rails-activerecord,Ruby On Rails,Ruby On Rails 4,Activerecord,Rails Activerecord,提前感谢你的帮助。Ruby-on-Rails就是这里的noob 我正试图用ActiveRecord来掩饰我的想法。具体地说,一旦某些内容保存到数据库中,我该如何从数据库中提取并操作它 我有一个用户表和一个消息表。用户有许多消息,消息属于用户 例如,在Rails控制台中,如果我创建一个用户,并通过以下方式将其存储在变量@created\u User中: @created_user = User.create(from_number: "1234") 然后尝试运行@created\u user.

提前感谢你的帮助。Ruby-on-Rails就是这里的noob

我正试图用ActiveRecord来掩饰我的想法。具体地说,一旦某些内容保存到数据库中,我该如何从数据库中提取并操作它

我有一个
用户
表和一个
消息
表。用户
有许多
消息,消息
属于
用户

例如,在Rails控制台中,如果我创建一个
用户
,并通过以下方式将其存储在变量
@created\u User
中:

@created_user = User.create(from_number: "1234") 
然后尝试运行
@created\u user.attributes.keys
以获得正确的信息。(仅为
@created\u user
创建的密钥列表)

但是,如果我通过以下方式从数据库中提取用户:

@looked_up_user = User.where(from_number: "12345")
我让用户正确地拉起来。(控制台向我显示SELECT语句,以及它提取的内容,这是正确的。)

但是,当我跑步时:

@looked_up_user.attributes.keys 
我得到
未定义的方法“属性”

为什么属性只能在新创建的db元素上访问,而不是我分配给变量的任何东西

如果我想查看
@looked\u up\u user
变量中的所有键,我该怎么做

很抱歉,这里有一个基本问题,我只是无法理解文档:


用户。其中
在控制台中指示时返回一个
关系,而不是模型实例-它看起来像一个包含对象的数组

您可以执行
User.where(从_编号:“12345”).first.attributes.keys

或者
User。从_number(“12345”).属性.键中按_查找_。其中
返回一个
关系
,而不是模型实例,在控制台中进行指示时-它看起来像一个包含对象的数组

您可以执行
User.where(从_编号:“12345”).first.attributes.keys

用户。从\u编号(“12345”)。属性。键中查找\u。谢谢!当我调用db时,有没有一种方法可以让我调出模型实例?答案中没有User.where是User.where是User。我可以做些什么来提取模型实例?@PhilipCortes的例子在回答中,关键在于使用
的查询,其中
可以获取多个(或无)对象,因此将返回值看作是一种array@PhilipCortes不客气。如果这帮助了你——考虑“接受”答案,我意识到我必须这么做。对不起!执行此查询并获取单个实例的另一种方法是使用find_by()方法。当您传入多个属性时,这些方法往往比动态方法更干净一些。。。用户。查找方式(发件人:12345,是否活动:true)谢谢!当我调用db时,有没有一种方法可以让我调出模型实例?答案中没有User.where是User.where是User。我可以做些什么来提取模型实例?@PhilipCortes的例子在回答中,关键在于使用
的查询,其中
可以获取多个(或无)对象,因此将返回值看作是一种array@PhilipCortes不客气。如果这帮助了你——考虑“接受”答案,我意识到我必须这么做。对不起!执行此查询并获取单个实例的另一种方法是使用find_by()方法。当您传入多个属性时,这些方法往往比动态方法更干净一些。。。User.find_by(from_number:12345,is_active:true)