我有一个parent
表和一个child
表。
Parent
has_many: children
和Child
belongs_to:parent
。
父母登录然后添加他的孩子。
父模型中有一个管理字段,当设置为true
时,将用户设置为管理员。
我有一个管理员视图页面,我希望管理员能够看到所有父母及其子女。
这怎么可能?以下是管理员显示页面。我在child和parent之间创建了一个连接。
parent.rb
class Parent < ApplicationRecord
has_many :children, dependent: :destroy
end
child.rb
class Children < ApplicationRecord
belongs_to :parent
end
要加入表的迁移文件:
class CreateJoinTableParentChild < ActiveRecord::Migration[5.2]
def change
create_join_table :parents, :children do |t|
t.index [:parent_id, :child_id]
t.index [:child_id, :parent_id]
end
end
end
main_admin.html.erb
<div class="col-sm-9 col-xs-12">
<div class="content" role="main" id="main-content">
<article>
<div>
<h1>Admin</h1>
<div class="table-responsive">
<table class="table table-bordered">
<tbody>
<tr>
<th>Primary Parent</th>
(displays all parents)
<th>Children</th>
(displays children belonging to that parent)
</tr>
</tbody>
</table>
</div>
</div>
</article>
</div>
</div>
答案 0 :(得分:2)
会是这样的:
在控制器中:
@parents = Parent.includes(:children)
在视图中:
<% parents.each do |parent| %>
<%= parent.id %>
<% if parent.admin? %>
<% parent.children.each do |child| %>
<%= child.id %>
<% end %>
<% end %>
<% end %>
答案 1 :(得分:0)
由于您使用的是联接表,因此您的关系也应该has_and_belongs_to_many
才能正常运行(Article了解更多信息)
示例:
class Parent < ApplicationRecord
has_and_belongs_to_many :children, dependent: :destroy
end
# Note the singular "Child"
class Child < ApplicationRecord
# Note the pluralization because a Child can have more than 1 Parent
has_and_belongs_to_many :parents
end
现在,如果我理解正确,你正在寻找像
这样的东西class SomeController < ApplicationController
def main_admin
@parents = Parent.includes(:children).references(:children)
end
end
然后main_admin.html.erb
<div class="col-sm-9 col-xs-12">
<div class="content" role="main" id="main-content">
<article>
<div>
<h1>Admin</h1>
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>Primary Parent</th>
<th>Children</th>
</tr>
</thead>
<tbody>
<% @parents.each do |parent| %>
<tr>
<td><%= parent.name %></td>
<td><%= parent.children.map(&:name).join(', ') %>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</article>
</div>
</div>
这将列出父母的姓名以及用逗号连接的孩子的姓名。
更新(每条评论):
<div class="col-sm-9 col-xs-12">
<div class="content" role="main" id="main-content">
<article>
<div>
<h1>Admin</h1>
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>Primary Parent</th>
<th>Child</th>
</tr>
</thead>
<tbody>
<% @parents.each do |parent| %>
<% parent.children.each do |child| %>
<tr>
<td><%= parent.name %></td>
<td><%= child.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>
</article>
</div>
</div>