嗨 Stackoverflow 團隊。
我在rails上使用ruby,我試圖找到代碼來使用rails在同一列的2條記錄之間進行減法。
我有下表
customers
id num_hid num_oxi
1 1 2
2 3 4
3 5 6
4 7 8
我試圖得到這個結果
@result = last_num_hid_id_4 - last_num_hid_id_3
//calcultion is: 7-5 = 2
我做了這段代碼,但這顯示了陣列中的最后兩條記錄
<% @customers.each.last(2) do |customer|%> %>
<%= customer.num_hid %>
<% end %>
我試過這段代碼,但只顯示最后一條記錄
@last_customer =Customer.all.last
@last.num_hid
有人可以幫我解決這個問題嗎?
我會感謝你的所有評論。
提前致謝。
uj5u.com熱心網友回復:
您可以像這樣在模型中定義類方法
class Customer < ActiveRecord::Base
def self.subtraction(atr)
last[atr] - second_to_last[atr]
end
end
或更高效
class Customer < ActiveRecord::Base
def self.subtraction(atr)
last(2).pluck(atr).reverse.inject(:-)
end
end
然后在你的模型范圍之后呼叫它
例如
Customer.order(id: :desc).subtraction(:id)
# => -1 # if there is continuous sequence of ids
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457719.html
標籤:轨道上的红宝石 红宝石 ruby-on-rails-3 ruby-on-rails-4
上一篇:當trycatch在不同的函式中命中時退出if陳述句
下一篇:在Capybara中找到一個按鈕
