Rails显示多个相同的记录

时间:2012-12-18 21:53:36

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

我在下面提供我的有效记录。在view / users / show中,我想通过蓝图显示用户正在处理的任何项目。当用户向项目添加多个蓝图时,项目将多次显示。我尝试了一些validate_uniqueness选项无济于事。

class Blueprint < ActiveRecord::Base
  attr_accessible :id, :name, :project_id, :user_id, :loc
  belongs_to :user
  belongs_to :project
  has_many :comments
end

class Project < ActiveRecord::Base
  attr_accessible :id, :name
  has_many :blueprints
  has_many :users, :through => :blueprints
  has_many :comments
end

class User < ActiveRecord::Base
  attr_accessible :id, :name
  has_many :blueprints
  has_many :projects, :through => :blueprints
end

以下是显示同一项目的多个值的视图代码。

    <% @user.blueprints.each do |blueprint| %>
      <tr>
        <td><%= link_to blueprint.project.name, project_path(blueprint.project) %></td>
      </tr>
    <% end %>

谢谢!

2 个答案:

答案 0 :(得分:2)

尝试将uniq选项设置为用户true关系中的projects

class User < ActiveRecord::Base
  has_many :projects, :through => :blueprints, :uniq => true
end

答案 1 :(得分:1)

由于您已经在用户中拥有项目关联,为什么不绕过用户的项目而不是蓝图。

<% @user.projects.each do |project| %>
      <tr>
        <td><%= link_to project.name, project_path(project) %></td>
      </tr>
    <% end %>