2011-11-22 29 views
1

我环顾四周,并建立了多态多对多模型似乎工作。我把它就像这样:多对多多态模型 - 设置工厂女孩

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 

但我似乎无法得到它的工作,有没有人有任何想法我可以设置它?我不知道如果我在正确的地方创建后,我试着在categories_categoryables中调用它,但这似乎也没有帮助。

谢谢

回答

1

当你做关联时,你仍然需要为你的类别定义工厂。例如:

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

至少,这是我在工厂里设置的方法。

+0

谢谢,但似乎没有帮助。我认为在博客之后我有一些问题,但我无法弄清楚我应该如何解决它 –