Ruby on rails 如何从控制器检索不同模型的属性?

Ruby on rails 如何从控制器检索不同模型的属性?,ruby-on-rails,Ruby On Rails,我有一个用于演出的供应商控制器: def show @vendor = Vendor.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @vendor } end end 在我看来,审查(其中供应商:有许多审查) 还没有分析师报告

我有一个用于演出的供应商控制器:

def show
@vendor = Vendor.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @vendor }
end
end
在我看来,审查(其中供应商:有许多审查)


还没有分析师报告


因此,对于某个特定供应商的所有评审,我基本上都要经历一个“for”循环(这对我来说是一个棘手的概念,但似乎可行)

所以:我想显示User.name和User.email。我知道每个对应评论的用户id是什么(Review.user\u id),但我不知道如何显示用户模型的值

我认为使用find_by_id可以工作,但它无法识别用户


帮助?

如果您已经设置了一个
:在审阅模型和用户模型之间有一个
关系,那么您可以使用
Review.User
访问它。因此,您可以通过
review.user.name
review.user.email
等获得用户属性

请注意,如果要检索许多子记录以便像这样循环,则可能需要使用
:include
参数调用
find
,以减少查询次数。比如:

Vendor.find(params[:id], :include => { :reviews => :user } )

有关更多信息,请参阅。

您好,我是否会在for循环中包含Vendor.find?我创建了一个“:has\u many”关系,因为用户有很多评论。可能吗?不,你不需要多次打电话给find。只需在您的审核模型中添加“:belishing_to:user”即可使他们的关系双向运行。是的,我已经有了一个:belishing_to和Review.user.name一直说值为“nil”……让我来处理一下。这意味着与供应商同时预加载所有审核和用户,这比让它们根据需要逐个加载要快。在我链接的同一文档页面上,上面题为“急切加载关联”的部分对此进行了解释。
Vendor.find(params[:id], :include => { :reviews => :user } )