Rails 查找所有关联记录满足条件的位置

con*_*t01 6 activerecord ruby-on-rails

我试图让所有与医生相关联的客户都没有开始他们的第一次会议(一个客户有_许多医生并且可以与他们每个人进行第一次会议)。

到目前为止,我有:

@clients =  Client.joins(:doctors).where('doctors.first_session IS NULL').order('clients.id DESC')
Run Code Online (Sandbox Code Playgroud)

但是当客户有例如 2 个医生时,这不起作用。第一个doctor.first_session = null 但第二个不是。这种情况将返回客户端,它不希望它返回。

有任何想法吗?

Don*_*van -4

您可以在模型中创建一个方法Client,如果客户医生的任何first_session为真,则该方法返回true,例如......

def has_first?
  self.doctors.each do |doctor|
    return true if !doctor.first_session.nil?
  end
  return false
end
Run Code Online (Sandbox Code Playgroud)

这是伪代码,可能需要先进行调整