首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新模型的Rspec错误“未定义方法”

新模型的Rspec错误“未定义方法”
EN

Stack Overflow用户
提问于 2016-01-17 08:15:11
回答 2查看 133关注 0票数 0

我创建了一个名为SponsoredPost的带有title:string, body:text and price:integer属性的模型。这个新模型应该是我所拥有的一个Topic模型的子模型。这是它的Rspec:

代码语言:javascript
复制
RSpec.describe SponsoredPost, type: :model do
  let(:topic) {Topic.create!(name: RandomData.random_sentence,description: RandomData.random_paragraph)}
  let(:sponsored_post) { topic.sponsored_posts.create!(title: RandomData.random_sentence, body: RandomData.random_paragraph, price: 99) }
  it { should belong_to(:topic) }

  describe "attributes" do

    it "should respond  to title" do
      expect(sponsored_post).to respond_to(:title)
    end
    it "should respond to body" do
      expect(sponsored_post).to respond_to(:body)
    end
    it "should respond to price" do
      expect(sponsored_post).to respond_to(:price)
    end
  end
end

SponsoredPost模型:

代码语言:javascript
复制
class SponsoredPost < ActiveRecord::Base
  belongs_to :topic
end

专题模式:

代码语言:javascript
复制
class Topic < ActiveRecord::Base
  has_many :posts
  has_many :sponsored_posts
  has_many :posts, dependent: :destroy
  has_many :sponsored_posts, dependent: :destroy
end

4次测试中有3次失败时出错:

代码语言:javascript
复制
 undefined method `sponsored_posts' for #<Topic:0x007fde82176570>

我做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-17 08:17:37

主题的未定义方法`sponsored_posts‘:0x007fde82176570

您也应该在模型上设置Topic关联

代码语言:javascript
复制
class Topic < ActiveRecord::Base
  has_many :sponsored_posts
end

更新:

您在Topic模型中有一个错误,如果仔细观察,您已经将其定义为sponsered_posts,其中应该是sponsored_posts

票数 0
EN

Stack Overflow用户

发布于 2016-01-17 08:17:50

您还必须在Topic模型中定义逆关系。

代码语言:javascript
复制
has_many :sponsored_posts
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34836409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档