Rails模型:验证数字属性不等于零



我有一列,可以是正的,也可以是负的,但绝不是零。我正在做以下似乎不起作用的操作:

class Transaction < ActiveRecord::Base
  validates :amount, presence: true
  validates :amount, :numericality => { :not_equal_to => 0 }
  .
  .
  .

这是我的测试

let(:transaction) { FactoryGirl.build(:transaction) }
it "is invalid if amount is zero" do
  transaction.amount = 0
  expect(transaction).to have(1).error_on(:amount)
end

这是我的工厂:

FactoryGirl.define do
  factory :transaction do
    sequence(:description) { |n| "Transaction #{n}" }
    category_id nil
    amount -100
    notes nil
    fund_id 1
  end
end

如何判断数字是正数还是负数?我还做错了什么吗?

谢谢

您想要:other_than,而不是:not_equal_to

validates :amount, :numericality => { :other_than => 0 }

查看validates_numericality_of的所有选项的文档

最新更新