2013-05-21 3 views
0

У меня есть бета-приложение Rails 4 (на Ruby 2), и я получаю сообщение об ошибке, из которого я не могу понять.Подкласс подкласса ActiveRecord NoMethodError на 'create'

У меня есть некоторые спецификации, которые терпят неудачу, потому что у моего класса модели нет метода «create», хотя я наследую ActiveRecord :: Base. Сообщение об ошибке вызывает мой класс как модуль (undefined method 'create' for Topic:Module), и это кажется странным.

спецификации/модели/topic_spec.rb:

require "spec_helper" 

describe Topic do 
    it "should create a new topic given valid attributes" do 
     Topic.create!({:created_by_id => 1, :title => "Test" }) 
    end 
end 

приложение/сообщение модели/topic.rb

class Topic < ActiveRecord::Base 
    include ActiveModel::ForbiddenAttributesProtection 

    validates :title => :presence => ture 
    validates :created_by_id => :presence => true 
end 

Ошибка:

$ rspec spec/models/topic_spec.rb 

    F 

    Failures: 

     1) Topic should create a new topic given valid attributes 
     Failure/Error: Topic.create!({:created_by_id => 1, :title => "Test" }) 
     NoMethodError: 
      undefined method `create' for Topic:Module 
     # ./spec/models/topic_spec.rrc:15:in `block (2 levels) in <top (required)>' 

ответ

1

Похоже, у вас есть модуль или пространство имен, также называемое Topic, которое загружается первым, и поэтому в ваших тестах Тема не относится к вашему классу. Есть ли другие файлы, в которых есть Тема, даже что-то вроде класса Тема :: Вопрос или подобное? Если это так, попробуйте вынести их или быть явным. Например, изменение:

class Topic::Question < ActiveRecord::Base 

в

class Topic 
    class Question < ActiveRecord::Base 
+0

Право на деньги. Приложение называется «Тема». Большое спасибо! –

Смежные вопросы