Rails 3 noob-填充数组的难度



用下面的解决方案更新会产生新错误。

用户邀请其他人查看他们的作品。为了跟踪这一点,邀请表具有reviewer_id和reviewe_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

<lt;将元素添加到数组中。并且,在迭代之前,我们创建一个数组。

相关内容

  • 没有找到相关文章

最新更新