has_many через форму, управляемую флажками - PullRequest
0 голосов
/ 12 июля 2011

Модели: на основе rails 3 guide !

class Physician < ActiveRecord::Base
  has_many :physician_specialities
  has_many :specialities, :through => :physician_specialities
end

class speciality < ActiveRecord::Base
  has_many :physician_specialities
  has_many :physicians, :through => :physician_specialities
end

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

И схема базы данных выглядит следующим образом:

Physician
  id
  name
Speciality
  id
  name
PhycianSpeciality
  id
  physician_id
  speciality_id
  description

Я хочу иметь форму, котораяможет добавить специальности к врачу и написать небольшое описание этой специальности (по словам врача).

Я думаю, что могу использовать что-то вроде этого Быстрый совет: has_many: through => флажки !

<% form_for @physician do -%>
  <% Speciality.all.each do |group| -%>
    <div>
      <%= check_box_tag :speciality_ids, speciality.id, @user.specialities.include?(speciality), :name => 'user[speciality_ids][]' -%>
      <%= label_tag :speciality_ids, speciality.name -%>
    </div>
  <% end -%>
  <%= submit_tag -%>
<% end -%>

Но я не знаю, куда я могу добавить описание специальности ...

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Поскольку описание ожидает создания записи соединения в PhysicianSpecialty, я просто передал бы описание в виде text_area и отсортировал его в ожидании сохранения врача.

physicians_controller.rb

# i imagine ur update method would look kinda like this
def update
  @physician = Physician.find(params[:id])
  if @physician.update_attributes(params[:physician])
    physician_specialty = PhysicianSpecialty.find_by_specialty_id(:specialty_id => specialty.id)
    physician_specialty.update_attribute(:description, params[:description])
  else
    render :action => :edit
  end
end
0 голосов
/ 12 июля 2011

Мне кажется, что вам не хватает как минимум двух таблиц / моделей отношений.

  • SpecialtyDescription
  • PhysicianSpecialityDescription

Таким образом, вы можете иметь правильную связь между PhysicianSpeciality & PhysicianSpecialityDescription (PhysicianSpeciality_id, SpecialtyDescription_id) и SpecialtyDescription.

...