从控制器中搜索has_many表

时间:2014-08-11 20:15:49

标签: ruby-on-rails has-many-through form-for

我不知所措。我有一个form_for,可以在has_many through关系中创建一个新记录。我要做的是找出连接表中是否有特定值,并根据结果保存不同。

所以,使用guide中的示例,我有:

class Physician < ActiveRecord::Base
  has_many :appointments
  has_many :patients, through: :appointments

  accepts_nested_attributes_for :appointments, :patients
end

class Appointment < ActiveRecord::Base
  belongs_to :physician
  belongs_to :patient
end

class Patient < ActiveRecord::Base
  has_many :appointments
  has_many :physicians, through: :appointments

  accepts_nested_attributes_for :appointments, :physicians
end

我使用<%= form_for(@physician) do |f| %>获得了一个有效的form_form 在表单内部,我已将此行包含在一个非模型变量中,以指定特定患者:<%= hidden_field_tag :patient_id, :value => @patient_id%>。我已经检查了所有值,并且它们很好地传递到控制器的创建操作中。这就是我的问题出现的地方:

假设我正在尝试为现有的约会分配第二位医生。

在医生控制器的创建操作中,我试图在约会表中搜索:使用隐藏字段传入的patient_id。我想以不同的方式保存结果,具体取决于该患者是否有现有的预约。如果我找不到患者,我想为该医生创建患者和预约。如果我在约会表中找到患者,我想创建一个记录,通过约会表将医生与患者联系起来。

我希望这有点清楚吗?

0 个答案:

没有答案