仅在满足条件的情况下进行Rails模型计算

迈克·维森哈特(Mike Wiesenhart)

我有一个item模型,需要计算总利润减去任何费用。我目前正在模型中执行此操作。但是,我希望仅在将布尔值更新为已售出后才能运行该计算。我已经在模型中尝试了if语句,但是没有用。

item.rb

class Item < ActiveRecord::Base
  def profit_calc
    sold_for - bought_for - fees - shipping rescue 0
  end

  def self.purchase_total
    sum(:bought_for)
  end

  def self.fee_total
    sum(:fees)
  end

  def self.shipping_total
    sum(:shipping)
  end

  def self.sales_total
    sum(:sold_for)
  end

  def self.profit_total
    sum(:sold_for) - sum(:bought_for) - sum(:fees) - sum(:shipping)
  end

  scope :visible, -> { where(sold: false) }
  scope :sold, -> { where(sold: true) }
end

schema.rb

create_table "items", force: :cascade do |t|
  t.string   "description"
  t.float    "bought_for"
  t.float    "sold_for"
  t.float    "fees"
  t.float    "shipping"
  t.datetime "created_at",                          null: false
  t.datetime "updated_at",                          null: false
  t.boolean  "sold",                default: false
end

statistics.html.erb

<td><%= number_to_currency(@items.profit_total) %></td>
蒙塔西姆

您可以sold在计算中使用范围:

  def self.profit_total
    sold.sum(:sold_for) - sold.sum(:bought_for) - sold.sum(:fees) - sold.sum(:shipping)
  end

但是每次调用Item.profit_total它都会执行所有查询。如果您经常需要,可能要缓存计算,如果已售出,则在after_save回调中使缓存过期。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅在满足条件的情况下才加入SQL

来自分类Dev

SQL:仅在满足条件的情况下更新字段

来自分类Dev

仅在满足条件的情况下运行SQL查询

来自分类Dev

仅在满足条件的情况下更新行

来自分类Dev

仅在满足条件的情况下选择某些列

来自分类Dev

仅在满足条件的情况下如何开始活动

来自分类Dev

仅在满足条件的情况下才执行CHECK语句

来自分类Dev

仅在满足条件的情况下如何开始活动

来自分类Dev

仅在满足条件的情况下更新行

来自分类Dev

仅在* all *值不满足特定条件的情况下选择SQL中的行

来自分类Dev

bash列出特定类型的文件,但仅在满足条件的情况下

来自分类Dev

仅在明细表满足条件的情况下,才如何获取主表的行?

来自分类Dev

在jVectorMap中,仅在满足条件的情况下如何选择区域?

来自分类Dev

MySQL:仅在满足某些条件的情况下更新项目

来自分类Dev

angular 2仅在满足条件的情况下如何添加元素属性

来自分类Dev

MongoDB:仅在满足条件的情况下才应用$ filter阶段?

来自分类Dev

仅在“详细信息”表满足条件的情况下,才如何获取“主行”表?

来自分类Dev

仅在满足特定条件的情况下如何使菜单可单击?

来自分类Dev

MySQL:仅在满足某些条件的情况下更新项目

来自分类Dev

仅在满足某些条件的情况下添加单元格

来自分类Dev

Rails:在满足两个条件的情况下访问记录

来自分类Dev

仅在满足两个条件的情况下,才在单个sql语句中选择两行

来自分类Dev

Rails仅在有条件的情况下验证唯一性

来自分类Dev

在满足条件的情况下,在跳过jira任务的条件时,使用先前分配的set_fact的值进行Ansible

来自分类Dev

在使用 rails ORM::ActiveRecord 进行反向查找的情况下,如何找到模型?

来自分类Dev

关键字“仅在条件成立的情况下使用”

来自分类Dev

仅在没有例外的情况下进行枚举

来自分类Dev

条件在何处子句的情况。如果仅在条件匹配的情况下使用过滤条件

来自分类Dev

jQuery:仅在满足某些条件的情况下,更改与另一个DIV共享类的DIV(但仍然也拥有一个唯一的类)

Related 相关文章

  1. 1

    仅在满足条件的情况下才加入SQL

  2. 2

    SQL:仅在满足条件的情况下更新字段

  3. 3

    仅在满足条件的情况下运行SQL查询

  4. 4

    仅在满足条件的情况下更新行

  5. 5

    仅在满足条件的情况下选择某些列

  6. 6

    仅在满足条件的情况下如何开始活动

  7. 7

    仅在满足条件的情况下才执行CHECK语句

  8. 8

    仅在满足条件的情况下如何开始活动

  9. 9

    仅在满足条件的情况下更新行

  10. 10

    仅在* all *值不满足特定条件的情况下选择SQL中的行

  11. 11

    bash列出特定类型的文件,但仅在满足条件的情况下

  12. 12

    仅在明细表满足条件的情况下,才如何获取主表的行?

  13. 13

    在jVectorMap中,仅在满足条件的情况下如何选择区域?

  14. 14

    MySQL:仅在满足某些条件的情况下更新项目

  15. 15

    angular 2仅在满足条件的情况下如何添加元素属性

  16. 16

    MongoDB:仅在满足条件的情况下才应用$ filter阶段?

  17. 17

    仅在“详细信息”表满足条件的情况下,才如何获取“主行”表?

  18. 18

    仅在满足特定条件的情况下如何使菜单可单击?

  19. 19

    MySQL:仅在满足某些条件的情况下更新项目

  20. 20

    仅在满足某些条件的情况下添加单元格

  21. 21

    Rails:在满足两个条件的情况下访问记录

  22. 22

    仅在满足两个条件的情况下,才在单个sql语句中选择两行

  23. 23

    Rails仅在有条件的情况下验证唯一性

  24. 24

    在满足条件的情况下,在跳过jira任务的条件时,使用先前分配的set_fact的值进行Ansible

  25. 25

    在使用 rails ORM::ActiveRecord 进行反向查找的情况下,如何找到模型?

  26. 26

    关键字“仅在条件成立的情况下使用”

  27. 27

    仅在没有例外的情况下进行枚举

  28. 28

    条件在何处子句的情况。如果仅在条件匹配的情况下使用过滤条件

  29. 29

    jQuery:仅在满足某些条件的情况下,更改与另一个DIV共享类的DIV(但仍然也拥有一个唯一的类)

热门标签

归档