Ruby on rails 这是否应该是一个多:通过关联?
一篇文章属于一个用户,而一个用户有许多文章。Ruby on rails 这是否应该是一个多:通过关联?,ruby-on-rails,database-design,relational-database,has-many-through,Ruby On Rails,Database Design,Relational Database,Has Many Through,一篇文章属于一个用户,而一个用户有许多文章。 一篇文章也属于一个主题,一个主题有许多文章 class User < ActiveRecord::Base has_many :posts end class Topic < ActiveRecord::Base has_many :posts end class Post < ActiveRecord::Base belongs_to :user belongs_to :topic end class用户
一篇文章也属于一个主题,一个主题有许多文章
class User < ActiveRecord::Base
has_many :posts
end
class Topic < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :topic
end
class用户
这很简单,也很容易设置,但是当我显示一个主题时,我不仅需要该主题的所有帖子,还需要制作该帖子的用户的用户名和照片。但是,这些属性存储在用户模型中,与主题无关。那么我该如何设置它呢
可能已经可以调用它了,因为Post模型有两个外键,一个用于用户,一个用于主题
或者,也许这是一种“单向”的交往方式。与Post类似的是join模型,一个主题将有许多:users,:through=>:posts。但事实并非如此。就像用户没有很多:主题一样
那么这是否需要有很多:尽管关联?我想我只是有点困惑,控制器对于给定主题同时调用帖子和帖子的用户会是什么样子
编辑:说真的,谢谢你的关心。我选择tal的答案是因为我用他的代码作为我的控制器;然而,我可以很容易地选择j.或tim的。也谢谢你们两位。这真是太简单了。我想今天可能标志着我对rails的爱的开始。在显示主题及其帖子时,你可以获得
用户名和用户照片
比如:
@topic.posts.each do |post|
user_name = post.user.name
user_photo = post.user.photo
end
很简单。如果我没有很好地理解您的问题,很抱歉。在显示主题及其帖子时,您可以获取用户名和用户照片
比如:
@topic.posts.each do |post|
user_name = post.user.name
user_photo = post.user.photo
end
很简单。抱歉,如果我没有很好地理解您的问题。好吧,如果您想显示文章作者的用户名,例如,您可以执行以下操作(未测试,但应该可以):
它应该为所有帖子生成一个请求,为用户生成一个请求,帖子集合应该有用户
在视图中(此处为haml):
例如,如果您希望显示文章作者的用户名,您可以执行以下操作(未测试,但应该可以正常工作):
它应该为所有帖子生成一个请求,为用户生成一个请求,帖子集合应该有用户
在视图中(此处为haml):
如果我没弄错你的问题,不,这里不需要通过联想
如果您想显示在某个主题中发布的所有用户的列表(跳过帖子信息),那么它会很有帮助
不过,为了防止n+1查询,您可能希望从帖子中快速加载用户。如果我正确理解您的问题,不,这里不需要通过关联
如果您想显示在某个主题中发布的所有用户的列表(跳过帖子信息),那么它会很有帮助
不过,为了防止n+1查询,您需要从帖子中快速加载用户。Hi Tim,您能详细说明一下吗。你说有很多:通过协会是不需要的,但后来说会有帮助。但我相信你的意思是,只有在我不想要实际的帖子的情况下,你才会这么做。对吗?因此,使用tal发布的控制器代码是完成此任务的最佳/最快的查询?嗨,Tim,你能详细说明一下吗。你说有很多:通过协会是不需要的,但后来说会有帮助。但我相信你的意思是,只有在我不想要实际的帖子的情况下,你才会这么做。对吗?因此,使用tal发布的控制器代码是完成此任务的最佳/最快查询?
- @posts.each do |post|
= post.user.name
= post.body