在 Rails 中 - 使用 has_many :through 和 has_and_belongs_to_many 有什么影响?考虑有两个模型 - 具有多对多关系的帖子和标签,如下所示:
class Tag < ActiveRecord::Base
has_many :posts_tag
has_and_belongs_to_many :posts
end
class Post < ActiveRecord::Base
has_many :posts_tag
has_many :tags, :through => posts_tag
end
class PostsTag < ActiveRecord::Base
belongs_to :tag
belongs_to :post
end
我使用的原因has_and_belongs_to_many
是因为 atag
属于许多帖子。
我确实查看了Rails Association 指南,发现他们没有提到多对多关系的这种情况。然而,我确实尝试过这个并且在 Rails 中运行它并没有产生任何行为,并且从我构建的小型测试数据库中,似乎也返回了正确的结果post.tags
和tag.posts
- wherepost
并分别tag
引用了Post
和Tag
模型的实例。
这是正确的用法还是有我不知道的副作用?另外,如果它是正确的,这是实现这一目标的 Rails 方式吗?
谢谢!