Я новичок в RoR, и я пытаюсь протестировать простой named_scope для моей модели.
Но я не знаю, есть ли у меня проблема в моей модели (я использую mongoid), в моем тесте кода (я использую rspec) или на моей фабрике. Я получил эту ошибку
Mongoid :: Ошибки :: InvalidCollection:
Доступ к коллекции для Movement не разрешен, так как это встроенный документ, пожалуйста, доступ к коллекции из корня
документ.
Мои модели
class Movement
include Mongoid::Document
field :description, :type => String
embedded_in :category
named_scope :top, lambda { |number| { :limit => (number.size > 0 ? number : 10) } }
end
class Category
include Mongoid::Document
field :name
embeds_many :movement
end
Моя фабрика, мошенница фабрикант
Factory.define :movement do |m|
m.amount 24
m.date "30/10/2011"
m.description "Beer"
m.association :category, :factory => :category
end
Factory.define :category do |c|
c.name "Drink"
end
Мой тест
describe "when i have a movement list" do
it "recent method should return last 2 movements" do
@movements = (1..3).collect { Factory(:movement) }
recent_movements = Movement.top(2)
recent_movements.should have(2).entries
end
end
И ошибка:
Mongoid :: Ошибки :: InvalidCollection:
Доступ к коллекции для Движения не разрешен, так как это встроенный> документ,
пожалуйста, получите доступ к коллекции из корневого документа.
Я попытался немного изменить свою фабрику.
Factory.define :movement do |m|
m.amount 24
m.date "30/10/2011"
m.description "Beer"
m.category { [ Factory.build(:category) ] }
end
Но тогда я получил другую другую ошибку:
Сбой / Ошибка: @movements = (1..3) .collect {Фабрика (: движение)}
NoMethodError:
неопределенный метод отражать_on_association для #
Может ли кто-нибудь мне помочь?
Спасибо