Rails:为什么user.attributes.keys只适用于新创建的用户,而不适用于我找到的(find_by)或与



提前感谢您的帮助。Ruby on Rails noob在这里。

我正试着把我的头脑放在ActiveRecord上。具体来说,一旦有东西被保存到数据库中,我该如何从数据库中提取并操作它

我有一个User表和一个Messages表。用户has_many消息、消息belongs_to用户。

例如,在Rails控制台中,如果我创建一个User并通过将其存储在变量@created_user

@created_user = User.create(from_number: "1234") 

然后尝试运行CCD_ 7,我得到了正确的信息。(@created_user的JUST密钥列表。)

但是,如果我通过从数据库中提取用户

@looked_up_user = User.where(from_number: "12345")

我让用户正确停车。(控制台向我显示SELECT语句,以及它提取的内容,它是正确的。)

然而,当我运行时:

@looked_up_user.attributes.keys 

我得到undefined method 'attributes'

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

如果我想查看@looked_up_user变量中的所有键,我该怎么做?

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

http://guides.rubyonrails.org/active_record_querying.htmlhttp://guides.rubyonrails.org/active_record_basics.html

User.where在控制台中指示时返回一个Relation,而不是模型实例——它看起来像是一个包含对象的数组。

你可以做User.where(from_number: "12345").first.attributes.keysUser.find_by_from_number("12345").attributes.keys

最新更新