在我的模特中,协会就像
案例:
has_many :case_steps, class_name: 'CaseStep', foreign_key: 'case_id', dependent: :destroy
CaseStep:
belongs_to :case, class_name: 'Case', foreign_key: 'case_id'
has_many :tasks, class_name: 'Task', foreign_key: 'case_step_id', dependent: :destroy
任务:
belongs_to :case_step, class_name: 'CaseStep', foreign_key: 'case_step_id'
在我的案例索引页面上,我显示所有案例。点击任何案例后,我被重定向到案例展示页面,在那里我可以看到案例的案例步骤。点击任何案例步骤后,我应该看到属于该案例步骤的任务。
我在控制器显示操作中执行了以下操作:
def show
@case = Case.find(params[:id])
@case_steps = @case.case_steps
@user_members = Member.select('users.name, cases.case_name')
.joins(:case, :user)
.where('members.case_id=?', @case)
@tasks = Case.select('tasks.*')
.joins(:case_steps => :tasks)
end
在视图文件中:
<% @tasks.each do |task| %>
<%= task.task_name %>
<%end%>
我获得了所有任务但不属于该案例步骤..如何获得属于该案例步骤的任务
如果我写这个查询:
Task.joins(:case_step).where('case_steps.id = :case_step', case_step: @case_steps.first.id)
然后我能够完成第一个案例步骤的任务。
如果在视图中我写道:
<% case_step.tasks.each do |task| %>
然后它给我n + 1个查询。有人可以帮助我如何完成特定案例步骤的任务