Ruby on rails 4 在rails中寻找真正的价值

Ruby on rails 4 在rails中寻找真正的价值,ruby-on-rails-4,rails-activerecord,Ruby On Rails 4,Rails Activerecord,我有一个名为DueAction的表,它引用了DueEmployeeDetail。只有当DueAction表中引用了DueEmployeeDetail表的所有条目都为true时,我才需要更新DueEmployeeDetail的is\u confimed列。例如,如果有5个条目,只有3个条目为true,则is\u Confixed不能更新为true 在模型中,我编写了以下内容:- def已存在(应提供员工详细信息) #比伯 标志=0 DueAction.exists?(是否确认:true,到期日员

我有一个名为DueAction的表,它引用了DueEmployeeDetail。只有当DueAction表中引用了DueEmployeeDetail表的所有条目都为true时,我才需要更新DueEmployeeDetail的is\u confimed列。例如,如果有5个条目,只有3个条目为true,则is\u Confixed不能更新为true

在模型中,我编写了以下内容:-
def已存在(应提供员工详细信息)
#比伯
标志=0
DueAction.exists?(是否确认:true,到期日员工详细信息\u id:到期日员工详细信息)
旗帜
结束
在控制器中,我有以下几点:-
如果@due\u action.is\u存在(@due\u action.due\u employee\u detail\u id)
DueEmployeeDetail.where(id:@due\u action.due\u employee\u detail\u id)。全部更新(是否确认:true)
其他的
结束
但它不起作用。它只检查真实性,而不检查所有的都是真是假。

我假设您对DB模型的设计感到满意。 如果我理解得很好,DueAction有一个DueEmployeeDetail的参考。最好不要在控制器中这样做,可以将此逻辑移动到模型中

class DueEmployeeDetail < ActiveRecord::Base

  before_save :confirm!, if: :has_all_due_actions_confirmed?

  def has_all_due_actions_confirmed?
    due_actions.all?(&:is_confirmed)
  end

  def confirm!
    self.is_confirmed = true
  end


end
class DueEmployeeDetail
我如何在controller中访问此方法?此方法包含在DueEmployeeDetails“生命周期”中。无论何时调用save,此回调都将自动运行
due\u employee\u detail=dueempoyeedetail.find(某些id)due\u employee\u detail.save将触发上述逻辑