Ruby on rails 4 如何在rails活动模型上构建select cmd?

Ruby on rails 4 如何在rails活动模型上构建select cmd?,ruby-on-rails-4,rails-models,Ruby On Rails 4,Rails Models,用户表 作为用户表,您将看到sarah受jhon邀请和baby受sarah邀请 预期结果 如何创建select cmd或以最佳方式获得rails活动模型上的预期结果?user.rb 或者您可以使用您的 邀请者的名称如下所示: @user.inviter.name @Zoker是正确的,您应该在您的模型定义中添加一个“归属于”子句: belongs_to :invited_by, class_name: "User" 一旦完成,请求就可以如此简单: User.all.each do |user

用户表

作为用户表,您将看到sarah受jhon邀请和baby受sarah邀请

预期结果

如何创建select cmd或以最佳方式获得rails活动模型上的预期结果?

user.rb

或者您可以使用您的

邀请者的名称如下所示:

@user.inviter.name

@Zoker是正确的,您应该在您的模型定义中添加一个“归属于”子句:

belongs_to :invited_by, class_name: "User"
一旦完成,请求就可以如此简单:

User.all.each do |user|
  puts [user.name, user.email, user.invited_by_id.to_s, user.invited_by.name].join(", ")
end
这将打印出您所需结果的基本CSV列表。这在控制台会话中最有意义——如果您将此代码放入控制器中,最终会在服务器输出中丢失

对于大型列表,使用此查找将获得性能上的提升。对于每一行,将向数据库发出一个单独的请求,以查找“邀请者”用户,以便我们可以读取名称

最好是这样做:

User.includes(:invited_by).each do |user|
  puts [user.name, user.email, user.invited_by_id.to_s, user.invited_by.name].join(", ")
end
这告诉Rails再进行一次查询,一次获得所有包含的“邀请用户”。这意味着现在只进行2次查询,而不是进行行数+1次查询


代码在编写时未经测试。

@Zoker,@Fader,一个黑暗的向导&我正在努力解决这个问题
@user.inviter.name
belongs_to :invited_by, class_name: "User"
User.all.each do |user|
  puts [user.name, user.email, user.invited_by_id.to_s, user.invited_by.name].join(", ")
end
User.includes(:invited_by).each do |user|
  puts [user.name, user.email, user.invited_by_id.to_s, user.invited_by.name].join(", ")
end