当前位置 : 主页 > 编程语言 > ruby >

ruby-on-rails – Rails Active Record ID与Object ID Active :: Relation

来源:互联网 收集:自由互联 发布时间:2021-06-23
我一直在收到这样的消息: 警告:不推荐使用Object#id;使用Object#object_id 我从Ruby Object#id warnings and Active Record开始阅读并尝试了这些技巧但没有成功: 108-125-94-123:toptickets johnnygoodman$rail
我一直在收到这样的消息:

警告:不推荐使用Object#id;使用Object#object_id

我从Ruby Object#id warnings and Active Record开始阅读并尝试了这些技巧但没有成功:

108-125-94-123:toptickets johnnygoodman$rails c
Loading development environment (Rails 3.0.3)
>> ticket_id = 8899
=> 8899
>> ticket = Ticket.where(:number => ticket_id)
=> [#<Ticket id: 97, name: "Set Up API to Feed Customer Info into Bronto  ", number: "8899", category_id: 15, created_at: "2011-01-31 21:24:29", updated_at: "2011-01-31 21:24:29", position: 20>]
>> ticket.id
(irb):3: warning: Object#id will be deprecated; use Object#object_id
=> 2175680980
>> ticket[:id]
TypeError: Symbol as array index
        from /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/relation.rb:363:in `[]'
        from /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/relation.rb:363:in `send'
        from /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/relation.rb:363:in `method_missing'
        from (irb):4
>> ticket.class
=> ActiveRecord::Relation

我希望当我查询票证时,它将属于ActiveRecord :: Base类.我不知道该怎么做才能实现这一目标,或者我应该采取的方向.

目标:查询故障单,打印其ID.在上面的示例中,id的值应为97.

ticket = Ticket.where(:number => ticket_id)返回一个ActiveRecord :: Relation(在IRB中评估时,执行数据库查询并返回一个票证数组).所以ticket.id试图在整个票证阵列上执行.id,而不是一张真正的票证.

也许你只想要第一个结果?

>> ticket = Ticket.where(:number => ticket_id).first
>> puts ticket.id
=> 97
网友评论