如何从Rails中的“第一个”或“最后一个”记录中获取属性值?

时间:2017-03-01 05:48:07

标签: 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_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"> 

我正在尝试获取最后一条记录的category_id

Equipment.last.pluck(:category_id)

我认为我做错了。有人可以告诉我。怎么做?

2 个答案:

答案 0 :(得分:2)

你的方法是对的。但是你需要首先选择:category_id,然后查询最后一个。

Equipment.pluck(:category_id).last

这也有效

Equipment.last.try(:category_id)

答案 1 :(得分:1)

我认为你可以使用:

Equipment.last.try(:category_id)

因为last会给你单个记录,如果找不到记录,try会阻止你的异常