shoulda-matcher`instry_to`正在产生这个错误:未定义的方法`primary_key_name'

时间:2016-04-20 03:50:17

标签: ruby-on-rails ruby rspec shoulda

我有一个带有belongs_to关系的Rails 4应用程序,我试图用shoulda-matcher测试:

模特:

class Foo < ActiveRecord::Base
  belongs_to :bar
end

测试:

require 'rails_helper'

Rspec.describe Foo, type: :model do
  it { should belong_to :bar }
end

产生以下错误:

NoMethodError:
   undefined method `primary_key_name' for #<ActiveRecord::Reflection::BelongsToReflection:0x007fde9b87e368>
   Did you mean?  primary_key_type

如果我使用丑陋的话:

it { Foo.reflect_on_association(:bar).macro.should  eq(:belongs_to) }

测试通过。

我见过this SOthis GitHub issue,但他们引用了不同的匹配器并归咎于我没有安装的validates_existence gem。

我可以忍受冗长的语法,但任何建议都会非常感激。提前谢谢!

编辑:

看起来我的问题与宝石版本有关。我更改了shoulda和shoulda-matchers的版本,关系匹配器现在可以正常工作。

原始宝石版本:

rails: 4.2.6
shoulda: 2.11.3
shoulda-matchers: 3.1.1

使用gem版本:

shoulda: 3.5.0
shoulda-matchers: 2.8.0

0 个答案:

没有答案