【发布时间】:2012-03-13 14:45:56
【问题描述】:
在 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 的原因是因为tag 属于许多帖子。
我确实查看了Rails Association guide,发现他们没有提到这种情况是多对多关系。然而,我确实尝试过这个并且在 Rails 中运行它并没有产生任何行为,并且从我构建的小型测试数据库中,似乎也返回了 post.tags 和 tag.posts 的正确结果 - 其中 post 和 @ 987654328@ 分别指的是Post 和Tag 模型的一个实例。
这是正确的用法还是有我不知道的副作用?另外,如果它是正确的,这是 Rails 实现这一点的方式吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord associations model-associations