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
4

2 回答 2

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
于 2013-10-14T10:30:05.590 回答
1

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

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

我相信您需要为 Category 和 Post 模型执行此操作。

于 2013-10-14T10:31:38.137 回答