获取具有特定属性值的记录,并在另一个表中具有id

时间:2014-01-03 20:41:50

标签: ruby-on-rails ruby arrays ruby-on-rails-3 activerecord

Ruby on Rails 3,我试图存储一个变量,其中包含具有以下属性的记录:参加“是”的值,但也有一个属于一个reseller_id的user_id。

转销商有很多用户。证书属于一个用户。我可以根据证书中的:user_id属性获取变量以存储用户和/或代理商,但无法根据证书属性值将其存储为“是”或“否”

控制器定义变量:

@certs = Certificate.all
    @reseller_users_incerts = []  
    @trained_user_id = []
    @certs.each do |user|
      #if user.find_by_attend("Yes")
        @trained_user_id << user.user_id #all user ids in certification table
        id = user.user_id                 
        if u = User.find(id)
        @reseller_users_incerts << u.reseller_id  #all reseller ids from certifications table
      end
      #end
    end

@reseller_users_incerts为我提供了保存证书记录的用户的所有经销商的ID。我还需要根据证书存储变量:参加“是”或“否”的值

这是观点:

<% if @reseller_users_incerts.include?(reseller.id) %>
    <td><%= "Yes" %></td>
<% else %>
    <td><%= "No" %></td>
<% end %>

证书模型:

class Certificate < ActiveRecord::Base
attr_accessible :attend, :pass, :user_id

belongs_to :user

validates :user_id, presence: true
end

谢谢

1 个答案:

答案 0 :(得分:2)

你的内部阻塞令人困惑,因为你使用user作为一个循环变量,当它真的是Certificate时。更改该变量并假设attend确实是Certificate的属性,然后使用现有结构引入此检查将如下所示:

@certs.each do |cert|
  if cert.attend == "Yes"
    @trained_user_id << cert.user_id #all user ids in certification table
    id = cert.user_id                 
    if u = User.find(id)
      @reseller_users_incerts << u.reseller_id  #all reseller ids from certifications table
    end
  end
end