Question

I have a question to the "has_and_belongs_to_many" and "accept_nested_attributes_for" in context to fabrication and mongoid

I have a Location which can have many services

class Location
  include Mongoid::Document

  field :name
  field :service

  has_and_belongs_to_many :services, inverse_of: :locations, autosave: true, dependent: :delete
  accepts_nested_attributes_for :services

  attr_accessible :services, :name



class Service
  include Mongoid::Document

  field :name, type: String

  has_and_belongs_to_many :locations, inverse_of: :services, autosave: true
  accepts_nested_attributes_for :locations
  attr_accessible :name, :icon, :description

on my Fabrication Files I have this

Fabricator(:service) do
  initialize_with { Location.produce(:location) }
  name "Service Name"
  description "Lorem ipsum est lauda en radios"
  location
end

Fabricator(:location) do
  name "Special Club"
  service
end

In this case my rspec hang up.

Can someone provide a working example with *accept_nested_attributes* and / or *has_and_belongs_to_many* with mongoid and the fabrication gem (which works "out of the box" with mongoid?

any suggestions?

I am working with mongoid3

Was it helpful?

Solution

This all depends on how you are using Fabrication.

Nesting parameters for testing controllers is a world of hurt and you will need some hand crafting for your params hash.

For models you should try this:

Fabricator(:service) do
  name "Service Name"
  description "Lorem ipsum est lauda en radios"
  locations {[Fabricate.build(:location)]}
end

Fabricator(:location) do
  name "Special Club"
  service
end

You probably don't need the :inverse_of for your relations.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top