我在模型之间有一个有效的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。
有什么想法吗?
答案 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}