2013-12-05 7 views
3

Использования Rails 4, Зевса 0.13.3, RSpec рельсов краев и Mongoid краяВ противном случае Rspec только с Зевсым с неопределенным способом для существующего поля с объявленным Mongoid использования STI шаблона проектирования

Простая модель STI:

файла my_model.rb в /model каталоге

class MyModel 
    include Mongoid::Document 

    field :my_field 
end 

Файл my_sti.rb в /model/my_model каталоге

class MyModel 
    class MySti << ::MyModel 

    field :some_other_field 
    end 
end 

Все работает как в консоли, так и в сети. Когда я бегу спецификации через Bundler:

расслоение Exec RSpec спецификации

It'all хорошо, но вопрос, когда я запускаю их с zeus, он бросает:

<class:MySti>': undefined method поле 'для MyModel :: MySti: класс (NoMethodError)

2 способа обойти проблему, что я го до сих пор:

  • комментируя field декларацию в ГНИ, функции работают отлично, но, очевидно, бизнес-логики нет!

  • повторное добавление include Mongoid::Document определения в MySti классе: спецификации и логика работают хорошо с этим, но я не должен был сделать это, и я устал от возможных непреднамеренных последствий делать.

Любые идеи?

+0

испытывают то же самое. Удар. –

ответ

0

Включает ли делегат работу?

из документации

class Greeter < ActiveRecord::Base 
    def hello 
    'hello' 
    end 

    def goodbye 
    'goodbye' 
    end 
end 

class Foo < ActiveRecord::Base 
    belongs_to :greeter 
    delegate :hello, to: :greeter 
end 

Foo.new.hello # => "hello" 
Foo.new.goodbye # => NoMethodError: 

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

  • Нет связанных вопросов^_^