0

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

帖子和用户... posts_users 表如广告所示,并且在其 model.rb 中都有必要的 has_and_belongs_to_many

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

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

我想用

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

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

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

user.posts.find(1234).comments

不工作或无效。

我尝试在all一些地方进行适当的尝试,因为过去有时这对其他尴尬的情况有效。仍然有一些陌生人的相遇。

user.posts.all.first工作并返回正确的 ID!,但使用 first 并没有真正的帮助。 user.posts.all.find(6933)返回#<Enumerable::Enumerator:0x105343630>

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

有任何想法吗?

4

2 回答 2

1

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

create_table :posts_users, :id => false do |t|
  t.references :posts
  t.references :users
end
于 2010-02-23T08:05:48.363 回答
0

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

于 2010-02-23T05:33:51.863 回答