2017-03-01 23 views
1

我正在嘗試從以下位置獲取Activerecord中最後一條記錄的列值, 。如何在Rails中從「第一個」或「最後一個」記錄中獲取屬性值?

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) 

我想我做錯了。請有人告訴我。它是如何完成的?

回答

1

我認爲你可以使用:

Equipment.last.try(:category_id) 

因爲最後會給你一個記錄,並嘗試將阻止你的異常,如果記錄中沒有找到

2

你的方法是正確的。但是你需要先摘下:category_id然後查詢最後一個。

Equipment.pluck(:category_id).last 

這也適用

Equipment.last.try(:category_id) 
+0

一個提示:如果你的'equipments'表非常拉赫,你會在內存中一個非常大的陣列的ID,這是低效的獲取。 – Ilya

+0

是的,剛剛意識到這一點 – DroidNoob

相關問題