rails HABTM加入并带来不便

时间:2010-02-23 03:05:18

标签: ruby-on-rails ruby join has-and-belongs-to-many

我在模型之间有一个有效的HABTM关联

帖子和用户... posts_users表与广告一样,并且在他们的模型中都有必要的has_and_belongs_to_many .rb

如果我使用User.find(1).posts,它会找到所有包含有效用户名的帖子

我的问题是如何处理这种情况。

我想用

user.posts.find(1234)或者来自控制器的eq:

current_user.posts.find(params[:id])

保护自己免受其他用户的欢呼。但是这种用法有一些奇怪的结果。它确实有效,但不是id是特定帖子或所有帖子的有效ID,而是返回id为1而不是1234的真实ID。所以进一步加入如:

user.posts.find(1234).comments

不起作用或无效。

我试图在all几个地方投入一些好的措施,因为这有时适用于过去的其他尴尬局面。还有一些陌生人的遭遇。

user.posts.all.first可以正常工作并返回正确的ID!但是先使用并不是很有帮助。 user.posts.all.find(6933)返回#<Enumerable::Enumerator:0x105343630>

还尝试了与(:post_id => 1234)的各种组合,返回始终为1的id。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这很可能是因为您的联接表posts_users有一个id列。在您的迁移中,您的联接表应如下所示:

create_table :posts_users, :id => false do |t|
  t.references :posts
  t.references :users
end

答案 1 :(得分:0)

用户如何通过帖子发表很多评论。然后像user.comments.find(:all,:conditions =&gt; {:post_id =&gt; 1234}