无法使用点表示法访问活动记录中的数据

时间:2011-03-25 19:31:46

标签: ruby-on-rails activerecord

我在Ruby中创建了一个模型并且遇到了n00b问题。在Rails控制台中:

  
    

s = Survey.where(:keyword =&gt;'foo')     =&GT; [#]     s.inittxtmsg     NoMethodError:未定义的方法inittxtmsg' for #<ActiveRecord::Relation:0x10350f8f8> from /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来查看值吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

Survey.where(:keyword => 'foo')

返回一个结果数组,所以你真的在数组上调用.inittxtmsg,这显然不存在。

您可以执行以下操作:

Survey.where(:keyword => 'foo').first.inittxtmsg,它在实际模型对象上调用它。

或者,如果您知道只有一个关键字= foo的调查...您可以使用find方法仅返回单个模型对象:

s = Survery.find_by_keyword("foo")
s.inittxtmsg