0

我对制造和 mongoid 上下文中的“has_and_belongs_to_many”和“accept_nested_attributes_for”有疑问

我有一个可以提供许多服务的位置

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

在我的制造文件上我有这个

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

在这种情况下,我的 rspec 挂断了。

有人可以提供一个带有 *accept_nested_attributes* 和/或 *has_and_belongs_to_many* 以及 mongoid 和制造宝石的工作示例(它与 mongoid 一起“开箱即用”吗?

有什么建议么?

我正在使用 mongoid3

4

1 回答 1

3

这一切都取决于您如何使用 Fabrication。

用于测试控制器的嵌套参数是一个痛苦的世界,您需要为您的 params 哈希进行一些手工制作。

对于模型,你应该试试这个:

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

您的关系可能不需要:inverse_of

于 2012-11-15T05:16:07.633 回答