Shoulda Matcher和has_many通过:nil的未定义方法`class_name':NilClass

时间:2016-08-21 13:51:19

标签: ruby-on-rails ruby rspec associations shoulda

我正在尝试通过与Rspec和Shoulda匹配器的关系测试a:has_many。

# student.rb
has_many :presences
has_many :calls, through: :presences

# student_spec.rb
it { should have_many(:presences) }
it { should have_many(:calls).through(:presences) }

#presence.rb
belongs_to :call
belongs_to :student

#presence_spec.rb
it { should belong_to(:call) }
it { should belong_to(:student) }

#call.rb
has_many :presences
has_many :students, through: :presences

#call_spec.rb
it { should have_many(:presences) }
it { should have_many(:students).through(:presences) }

只有最后一次测试失败,返回:

NoMethodError:
undefined method `class_name' for nil:NilClass
Did you mean?  class_eval

我找到this issue,但提出的解决方案对我没有帮助。

1 个答案:

答案 0 :(得分:0)

结果证明这是一个拐点问题。我的模型并没有像我的例子那样被称为另一种语言。

我必须为我的一个模型指定一个变形器,所以我的协会会起作用。

rspec或者最终没有问题。