gpt4 book ai didi

activerecord - 为什么在 Rspec 示例中未定义方法 "has_many"?

转载 作者:行者123 更新时间:2023-12-04 16:11:58 25 4
gpt4 key购买 nike

我正在玩一个关于通过 RSpec 中的关联测试 has_many 的示例。
我得到一个

   1) Foo specifies items       Failure/Error: subject.should have_many(:items)       NoMethodError:         undefined method `has_many?' for #       # ./spec/models/foo_spec.rb:10

My question: Why would has_many be undefined?

The spec is:

describe Foo do
it "specifies items" do
subject.should have_many(:items)
end
end

我的模型是:

foo.rb:
 class Foo < ActiveRecord::Base
has_many :bars
has_many :items, :through => :bars
end

酒吧.rb:
class Bar < ActiveRecord::Base
belongs_to :foo
belongs_to :item
end

和 item.rb:
class Item < ActiveRecord::Base
has_many :foos, :through => :bars
has_many :bars
end

最佳答案

嗯,没有has_many?模型对象的方法。和 rspec-rails默认情况下不提供此类匹配器。然而,shoulda-matchers gem 做:

describe Post do
it { should belong_to(:user) }
it { should have_many(:tags).through(:taggings) }
end

describe User do
it { should have_many(:posts) }
end

(例如来自 shoulda-matchers documentation )

只需添加 gem 'shoulda-matchers'给您的 Gemfile您将能够使用该语法。

关于activerecord - 为什么在 Rspec 示例中未定义方法 "has_many"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7513118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com