我不明白如何创建这是关系和路线。 我想为Category创建评论,对于帖子,它必须在Category#index和post #index pages中创建。
这是我的代码
has_many :posts
has_many :comments, through: :posts
belongs_to :category
belongs_to :post
belongs_to :category
has_many :comments, through: :category
我的迁移似乎是
class CreatePosts < ActiveRecord::Migration[5.1]
def change
create_table :posts do |t|
t.integer :category_id
t.string :name
t.string :content
t.string :file
t.timestamps
end
end
end
我不明白如何创建路线...以显示关于帖子和类别的评论......
这是我的路线
resources :categories do
resources :posts
如何建立良好的人际关系,良好的路线?我不明白......如何创建这个模型来建模关系以及我必须在迁移中创建的字段......
答案 0 :(得分:0)
您是否想要它,以便可以为帖子或类别创建评论?在这种情况下,它听起来像多态关联(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)的工作。您的关联看起来像这样:
class Comment < ActiveRecord::Base
belongs_to :commentable, polymorphic: true
end
class Post < ActiveRecord::Base
has_many :comments, as: :commentable
end
class Category < ActiveRecord::Base
has_many :comments, as: :commentable
end
这样一个帖子和类别都可以有很多注释,并且注释本身只与其中一个相关联(因此,可评论的数据库列不仅要存储引用ID,commentable_id
,而且它引用的模型类型commentable_type
- 上面的文档链接在数据迁移方面有更多内容。)
如果帖子与类别相关联(包含许多帖子的类别,以及包含多个类别的帖子),并且您希望根据类别中的帖子显示某个类别的评论,那么您的代码会看起来有点像像这样:
class Comment < ActiveRecord::Base
belongs_to :post
end
class Post < ActiveRecord::Base
has_many :comments
has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :posts
has_many :comments, through: :posts
end
为此,您还需要对名为:categories_posts
的表进行数据库迁移,该表将将帖子和类别映射到一起,而无需在两者之间建立模型。有关详情,请参阅http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association。
希望有所帮助!
答案 1 :(得分:0)
根据您的查询,您需要在评论表中添加category_id和post_id。通过在评论表中添加多态关联来实现此目的的正确方法。 Go-rails在rails comments with polymorphic association
上发布了类似的教程