Ruby on Rails中,Active Record ID与Object ID如何转换为Active Relation?

2026-04-11 19:042阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计371个文字,预计阅读时间需要2分钟。

Ruby on Rails中,Active Record ID与Object ID如何转换为Active Relation?

我一直在收到这样的信息:警告:不建议使用Object

我一直在收到这样的消息:

警告:不推荐使用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.

Ruby on Rails中,Active Record ID与Object ID如何转换为Active Relation?

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

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

>> ticket = Ticket.where(:number => ticket_id).first >> puts ticket.id => 97

本文共计371个文字,预计阅读时间需要2分钟。

Ruby on Rails中,Active Record ID与Object ID如何转换为Active Relation?

我一直在收到这样的信息:警告:不建议使用Object

我一直在收到这样的消息:

警告:不推荐使用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.

Ruby on Rails中,Active Record ID与Object ID如何转换为Active Relation?

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

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

>> ticket = Ticket.where(:number => ticket_id).first >> puts ticket.id => 97