Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从';第一';或';最后';Rails中的记录?_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 如何从';第一';或';最后';Rails中的记录?

Ruby on rails 如何从';第一';或';最后';Rails中的记录?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在尝试获取Activerecord中最后一条记录的列值, 从下面 2.2.4 :025 > Equipment.last Equipment Load (1.0ms) SELECT `equipment`.* FROM `equipment` ORDER BY `equipment`.`id` DESC LIMIT 1 => #<Equipment id: 7, identifier: "LID-0000007", country_id: 99, state

我正在尝试获取Activerecord中最后一条记录的列值, 从下面

2.2.4 :025 >   Equipment.last
  Equipment Load (1.0ms)  SELECT  `equipment`.* FROM `equipment`  ORDER BY `equipment`.`id` DESC LIMIT 1
 => #<Equipment id: 7, identifier: "LID-0000007", country_id: 99, state_id: 99, city_id: 99, listing_type: 3, title: "Mix", category_id: 1, sub_category_id: 2, manufacturer_id: 1, model: "ds323", serial_no: "232", year: 2011, condition: 4, other_condition: "", status: 4, other_status: "", price: #<BigDecimal:3d1b1d8,'0.32323E5',9(18)>, weight: nil, weight_units: nil, height: nil, height_units: nil, width: nil, width_units: nil, length: nil, length_units: nil, quantity_available: 1, name_plate_capactiy: nil, name_plate_capactiy_units: "", voltage: "", frequency: nil, phase: nil, current: "", current_units: nil, hours_worked: "", place_of_manufacturing: "", description: "", selling_status: 1, created_at: "2017-02-28 10:15:43", updated_at: "2017-02-28 10:16:30", user_id: 4, wanted_equipment_id: 5, is_read_after_active: false, slug: "mix"> 
我想我做错了。谁能告诉我。如何做到这一点?

我认为您可以使用:

Equipment.last.try(:category_id)

因为last将为您提供一条记录,而try将防止您在未找到记录时出现异常

您的方法是正确的。但是您需要首先提取
:category\u id
,然后查询最后一个

Equipment.pluck(:category_id).last
这同样有效

Equipment.last.try(:category_id)

注意:如果你的
设备
表非常大,你会在内存中获取一个非常大的ID数组,这是非常低效的。是的,我刚刚意识到了这一点
Equipment.last.try(:category_id)