如何在 rails 中 select 不同的行

how to select distinct row in rails

total_site 模型有 project_iduser_idtotal_site_id 列。我可以访问属于 current_user 已登录的 site。现在我想访问 project_id 不同的列,但我得到相同的 project_id 的重复。我如何在 rails 中解决这个问题 .这是我的代码-

projects_controller.rb

 def new

    @projects = TotalSite.where(user_id: current_user.id) #here is want distinct project_id column

    @sites = TotalSite.where(user_id: current_user.id)
end 

form.html.erb

        <div class="field medium-4 columns">
          <%= form.label :select_project,:class=>"required" %>
          <%= form.collection_select :project_id, @projects, :id, :project_id, prompt: true %>
        </div>

        <div class="field medium-4 columns">
          <%= form.label :select_site,:class=>"required" %>
          <%= form.collection_select :site_id, @sites, :id, :name, prompt: true %>

        </div>

假设您有一个模型 Project,其中 has_many :total_sites 来自您的描述:

total_site model has project_id

如果您希望您的 @projects 是当前用户的所有唯一项目 ID,则

@projects = TotalSite.where(user_id: current_user.id).distinct.pluck(:project_id)

如果您希望它成为实际的 Project 记录,则

Project.joins(:total_sites).where(total_sites: { user_id: current_user.id }).distinct