我在下面提供我的有效记录。在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 %>
谢谢!
答案 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 %>