Ruby on rails - 查找对象集合是否具有给定属性的相同值



我有两个相关的模型:InvoiceCurrency

Invoice belongs_to CurrencyCurrency has_many Invoices

我有一个表格,显示每张发票的列表,我可以按货币过滤它们。发票还有一个price字段,我有一个计算我显示的发票总价的方法。

我的问题是,当且仅当每张发票具有相同的货币时,我才想显示总价。

我很确定有一种简单的方法可以实现这一点,但我找不到它。

任何帮助将不胜感激。

事实上,有很多方法可以实现这一点,例如,您可以通过这种方式检查它们是否都具有相同的货币:

invoices.reject {|inv| inv.currency_id == invoices[0].currency_id}.empty?

invoices.map {|inv| inv.currency_id}.uniq.length == 1

询问集合中的所有元素是否相同的最直接方法是询问是否所有元素都等于第一个元素:

invoices.all?{ |inv| inv.currency_id == invoices.first.currency_id }

如果您经常做这件事,则可以考虑使用方便的方法扩展枚举:

module Enumerable
  def all_same?
    v = first
    all? {|e| e == v}
  end
end
invoices.map(&:currency_id).all_same?

相关内容

  • 没有找到相关文章

最新更新