Rails 3 noob-难以填充数组

问题描述

从下面的解决方案进行更新会产生新错误用户邀请其他人查看他们的工作。为了对此进行跟踪,邀请表具有reviewer_id和reviewee_id字段。该模型包含:
belongs_to :user
has_many :users
显示用户的所有邀请,我们首先获取所有邀请:
@invitations = Invitation.where(\"reviewee_id = ?\",current_user.id ).select(:reviewer_id).order(\"updated_at\")
然后,我们得到了所有被邀请的用户:(这部分是错误的)
@reviewers = []
@invitations.each do |i|
  @reviewers << User.where(\"id = ?\",i.reviewer_id )
end
当前的解决方案产生以下结果:
undefined method `first_name\' for []:ActiveRecord::Relation
我使用以下代码进行了测试,以查看@reviewers中的内容
<% @reviewers.each do |r| %>
   <%= r.id %><br>
<% end %>
它没有返回ID,而是返回了:
2173491700
2173491200
2173490540
因此,无法正确填充数组。 感谢您的帮助,也感谢特定的代码。     

解决方法

您想收集所有ID,然后将其传递给
where
reviewer_ids = @invitations.collect { |i| i.reviewer_id }
@reviewers = User.where(:id => reviewer_ids)
这样可以在一个数据库调用中捕获所有审阅者。     ,请执行以下操作以获取审阅者:
@reviewers = []
@invitations.each do |i|
  @reviewers << User.where(\"id = ?\",i.reviewer_id )
end
<<将元素添加到数组。并且,在迭代之前,我们创建一个数组。