升级到 rails 4.2.1 会导致 validate_uniqueness_of 规范失败
Upgrading to rails 4.2.1 causes validate_uniqueness_of specs to fail
我有一个目前 运行 在 rails 4.1.4 上的应用程序,我正在尝试将其升级到 4.2.1
当涉及到 validates_uniqueness_of 声明时,我 运行 遇到了某些模型规格的问题
我的模特:
class PromoCode < ActiveRecord::Base
validates_presence_of :expiration_date, :code, :discount
validates_uniqueness_of :code
end
class Coupon < ActiveRecord::Base
validates :code, presence: true, uniqueness: true
end
我的规格:
RSpec.describe PromoCode, type: :model do
it { is_expected.to validate_presence_of(:expiration_date) }
it { is_expected.to validate_presence_of(:code) }
it { is_expected.to validate_presence_of(:discount) }
it { is_expected.to validate_uniqueness_of(:code) }
end
RSpec.describe Coupon, type: :model do
it { is_expected.to validate_presence_of(:code) }
it { is_expected.to validate_uniqueness_of(:code) }
end
存在性规范通过良好,但对于两个模型,唯一性规范均失败,并返回:
Failure/Error: it { is_expected.to validate_uniqueness_of(:code) }
NoMethodError:
undefined method `primary' for #<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x007f99176e0f20>
这是怎么回事?
这个
it { is_expected.to validate_uniqueness_of(:code) }
由 shoulda matchers gem 提供。看起来像一个错误。将 gem 更新到 2.80+ 稳定版应该可以解决这个问题。这里有一些细节
我有一个目前 运行 在 rails 4.1.4 上的应用程序,我正在尝试将其升级到 4.2.1
当涉及到 validates_uniqueness_of 声明时,我 运行 遇到了某些模型规格的问题
我的模特:
class PromoCode < ActiveRecord::Base
validates_presence_of :expiration_date, :code, :discount
validates_uniqueness_of :code
end
class Coupon < ActiveRecord::Base
validates :code, presence: true, uniqueness: true
end
我的规格:
RSpec.describe PromoCode, type: :model do
it { is_expected.to validate_presence_of(:expiration_date) }
it { is_expected.to validate_presence_of(:code) }
it { is_expected.to validate_presence_of(:discount) }
it { is_expected.to validate_uniqueness_of(:code) }
end
RSpec.describe Coupon, type: :model do
it { is_expected.to validate_presence_of(:code) }
it { is_expected.to validate_uniqueness_of(:code) }
end
存在性规范通过良好,但对于两个模型,唯一性规范均失败,并返回:
Failure/Error: it { is_expected.to validate_uniqueness_of(:code) }
NoMethodError:
undefined method `primary' for #<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x007f99176e0f20>
这是怎么回事?
这个
it { is_expected.to validate_uniqueness_of(:code) }
由 shoulda matchers gem 提供。看起来像一个错误。将 gem 更新到 2.80+ 稳定版应该可以解决这个问题。这里有一些细节