2013-10-14 87 views
0

我产生命名空间中的模型,我怎么可以设置很多一对多
关系,类别有很多帖子,帖子有很多类许多一对多的模型关系

rails g model Blog::Post body:text, title:string 
rails g model Blog::Category title:string 
rails g model Blog::CategoryPost post_id:integer, category_id:integer 

和我的模型看起来像

class Blog::Category < ActiveRecord::Base 
    attr_accessible :title 
    has_many :posts, :class_name => 'Blog::Post', :through => :blog_categories_posts 
end 
class Blog::CategoryPost < ActiveRecord::Base 
    belongs_to :category, :class_name => 'Blog::Category' 
    belongs_to :post, :class_name => 'Blog::Post' 
end 
class Blog::Post < ActiveRecord::Base 
    attr_accessible :body, :title 
    has_many :categories, :class_name => 'Blog::Category', :through => :blog_categories_posts 
end 

回答

1

这应该有效。您需要指定与中间表的关系。

class Blog::Category < ActiveRecord::Base 
    attr_accessible :title 
    has_many :categories_posts, :class_name => 'Blog::CategoryPost' 
    has_many :posts, :class_name => 'Blog::Post', :through => :categories_posts 
end 
class Blog::CategoryPost < ActiveRecord::Base 
    belongs_to :category, :class_name => 'Blog::Category' 
    belongs_to :post, :class_name => 'Blog::Post' 
end 
class Blog::Post < ActiveRecord::Base 
    attr_accessible :body, :title 
    has_many :categories_posts, :class_name => 'Blog::CategoryPost' 
    has_many :categories, :class_name => 'Blog::Category', :through => :categories_posts 
end 
1

尝试将关联添加到CategoryPosts到Category和Post模型中。例如:

class Blog::Category < ActiveRecord::Base 
    ... 
    has_many :blog_category_posts, :class_name => "Blog::CategoryPost" 
    ... 
end 

我相信你需要为Category和Post模型做这件事。