Много ко многим полиморфным моделям - Настройка заводской девушки - PullRequest
1 голос
/ 23 ноября 2011

Я осмотрелся и создал полиморфную модель "многие ко многим", которая, кажется, работает.Я настроил это так:

class Category < ActiveRecord::Base
  has_many :category_categoryable
  has_many :blogs, :through=>:category_categoryable
  has_many :language, :through=>:category_categoryable

class Blog < ActiveRecord::Base
  has_many :category_categoryable, :as=>:categoryable
  has_many :category, :through=>:category_categoryable

class Language < ActiveRecord::Base  
  has_many :category_categoryable, :as=>:categoryable
  has_many :category, :through=>:category_categoryable

class CategoryCategoryable < ActiveRecord::Base
  belongs_to :category
  belongs_to :blog, :polymorphic=>true
  belongs_to :language, :polymorphic=>true

есть ли причина, почему я не должен этого делать, также я не могу понять, как настроить заводскую девушку, я пробовал это:

FactoryGirl.define do
  factory :blog do 
    sequence(:title) {|b| "Blog name #{b}" }
    content "blog content"
    meta "meta content"
    publish_date Date.parse("2011-05-02")
    displayit true

    after_create {|a| Factory(:category, :categoryable=>a)}
  end
end


FactoryGirl.define do
  factory :category do
   sequence(:name) {|n| "category#{n}" }
  end
end


FactoryGirl.define do
  factory :categories_categoryables do 
    association :category
    association :categoryable, :factory => :blog 
  end
end

Но я не могу заставить его работать, у кого-нибудь есть идеи, как мне это настроить?Я не уверен, что у меня есть после создания в правильном месте, я пытался вызвать его в category_categoryables, но это тоже не помогло.

Спасибо

1 Ответ

1 голос
/ 23 ноября 2011

Вам все еще нужно определить фабрику для вашей категории, когда вы делаете ассоциацию.Что-то вроде:

FactoryGirl.define do
  factory :categories_categoryables do 
    association :category, :factory => :category
    association :categoryable, :factory => :blog 
  end
end

По крайней мере, так я его настроил на своих фабриках.

...