不在ruby连接查询中获取精确值

时间:2013-07-16 05:23:51

标签: ruby-on-rails-3.2 associations

在我的模特中,协会就像

案例:

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个查询。有人可以帮助我如何完成特定案例步骤的任务

0 个答案:

没有答案