Ruby on rails 检查费用金额和费用类型最大限额

Ruby on rails 检查费用金额和费用类型最大限额,ruby-on-rails,Ruby On Rails,我正在尝试使用Rails 4.1构建一个小型费用跟踪应用程序。有一个带有费用名称和上限的费用类型模型。这用于设置气体、移动设备等索赔的最大上限。费用类型属于用户提交的费用模型。在新的费用表单中,他们可以从下拉列表中选择费用类型并添加行项目 我使用模型方法来计算所有行项目的总数。现在,我想在每次提交后检查总金额是否超过费用类型上限。每次提交都会存储费用类型。例如,如果提交的天然气(费用类型id=2)账单金额为100美元,上限为80美元,我想更新通知属性 我有点困惑如何正确地做这件事。我尝试了以下方

我正在尝试使用Rails 4.1构建一个小型费用跟踪应用程序。有一个带有费用名称和上限的费用类型模型。这用于设置气体、移动设备等索赔的最大上限。费用类型属于用户提交的费用模型。在新的费用表单中,他们可以从下拉列表中选择费用类型并添加行项目

我使用模型方法来计算所有行项目的总数。现在,我想在每次提交后检查总金额是否超过费用类型上限。每次提交都会存储费用类型。例如,如果提交的天然气(费用类型id=2)账单金额为100美元,上限为80美元,我想更新通知属性

我有点困惑如何正确地做这件事。我尝试了以下方法,但得到了未定义的方法类型错误:

def check_cap
    if self.expense_amount.to_i != self.expense_type.cap
        self.update_attribute(:notification, "This item is over the budget")
    end
end 

想知道如何正确使用费用类型id来检查情况,有人能帮我吗?

您的费用类型关联是反向的。费用应该属于费用类型,而不是相反

使用ActiveRecord验证和错误指示金额超过上限。这样,记录将无效,并且在有效之前不会保存

检查费用金额是否大于上限。检查它是否不相等将在费用金额高于或低于上限时将该项目标记为超出预算

class ExpenseType < ActiveRecord::Base
  has_many :expenses
end

class Expense < ActiveRecord::Base
  belongs_to :expense_type

  validate :expense_amount_is_within_cap

  def expense_amount_is_within_cap 
    if expense_amount > expense_type.cap
      errors.add(:expense_amount, 'is over the budget')
    end
  end
end
class ExpenseType费用类型.cap
错误。添加(:费用\金额“超出预算”)
结束
结束
结束

这些都是非常有用的澄清。如果您不介意,请检查并让我知道如何将评论与用户关联?