2012-12-18 27 views
0

我在下面提供了我的活动记录。在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

尝试在用户的projects关系设定uniq选项true这样

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

这没有奏效。我现在正在探索选项。 –

+0

如果有帮助,我从视图中添加了我的代码。 –

+0

感谢您的帮助。当进一步移动时,我去解决另一端的相同问题,并意识到当我添加cgat的解决方案时,我意外地留下了修复程序。你们俩都帮助我的小白! –

1

既然你已经拥有的用户,为什么通过用户的项目,而不是蓝图你不循环的项目关联。

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

工作!现在我将花一些时间检查为什么这给了我很多麻烦:? –

+1

你正在循环蓝图,因此,对于每个用户的蓝图,都会产生一个链接,即使该链接一遍又一遍地重复。当你编写'has_many:projects,通过::blueprints'时,你告诉rails你只需要该用户的项目,并且为了弄清楚用户拥有哪些项目,请查看蓝图表。希望有助于澄清事情 – cgat

+0

它的确如此。我很好奇为什么我首先做到了这一点。谢谢你的帮助。 –