无法使用点表示法访问活动记录中的数据
我用 Ruby 创建了一个模型,但遇到了一个 n00b 问题。在 Rails 控制台中:
<块引用>s = Survey.where(:keyword => 'foo') => [#] s.inittxtmsg NoMethodError: #
的未定义方法 inittxtmsg' 来自 /Library/Ruby/Gems/1.8/gems/activerecord-3.0.5/lib/active_record/relation.rb:371:in
method_missing' 来自(irb):3
难道我不能通过输入 s.Survey_id、s.inittxtmsg、s.keyword、s.store 来查看这些值吗?
谢谢你!
I created a model in Ruby and am stuck on a n00b issue. In Rails Console:
s = Survey.where(:keyword => 'foo')
=> [#]
s.inittxtmsg
NoMethodError: undefined methodinittxtmsg' for #<ActiveRecord::Relation:0x10350f8f8>
method_missing'
from /Library/Ruby/Gems/1.8/gems/activerecord-3.0.5/lib/active_record/relation.rb:371:in
from (irb):3
Shouldn't I be able to see the values by typing s.Survey_id, s.inittxtmsg, s.keyword, s.store?
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
返回结果数组,因此您实际上是在数组上调用 .inittxtmsg,而该数组显然不存在。
您可以执行以下操作:
Survey.where(:keyword => 'foo').first.inittxtmsg
,其中它在实际模型对象上调用它。或者,如果您知道只有一项调查包含关键字 = foo...,您可以使用 find 方法仅返回单个模型对象:
returns an array of results, so you are really calling .inittxtmsg on an array, which obviously doesn't exist.
You could do something like:
Survey.where(:keyword => 'foo').first.inittxtmsg
, in which it is calling it on the actual model object.Or if you know that there is only one survey with the keyword = foo... you can use the find method to only return a single model object: