現在、Rails 4を使用して多対多の関係で「実践」プロジェクトを進めています。実際には、レールをどうやってやるのか分からないことはほとんどありません。現在、医師と患者の2つのモデルがあります。私は予定モデルと一緒にそれらを結んだ。 (私は医師のみが含まれると私は現在、患者モデルで作業をしておりませんので、コードを任命します。)Railsで多対多の関係を扱う4
医師のモデルコード:
class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, :through => :appointments
end
予定モデルのコードをここに私はこれまで持っている私のコードです:
class Appointment < ActiveRecord::Base
belongs_to :physician
belongs_to :patient
end
医師コントローラー:
class PhysiciansController < ApplicationController
def index
@physicians = Physician.all
end
end
Appointme NTSコントローラ:
class AppointmentsController < ApplicationController
def index
@appointments = Appointment.all
@physicians = Physician.all
end
end
予定インデックスページコード-Iは、各予定の医師を表示する:
<h1>Showing Appointments</h1>
<% @appointments.each do |appointment| %>
<% appointment.physicians.each do |physician| %>
<h3><%= appointment.physicians.name %></h3>
<% end %>
<% end %>
スキーマ:
:create_table "appointments", force: :cascade do |t|
t.integer "physician_id"
t.integer "patient_id"
t.datetime "appointment_date"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "patients", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "physicians", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
私のルートを必要に応じて
resources :patients
resources :physicians
resources :appointments
はい、私は持っていません多くのコード私は足場を使用せず、自分ですべてを構築していません。 (これは私がベストを学ぶ気持ちです。)私が得ている具体的なエラーは次のとおりです:未定義のメソッドphysicians' for #<Appointment:0x007fa7d5bf7370> as well as undefined method
それぞれのために#変更した場合、次の行のsを取り去ります。コントローラー内で:
<%任命医師が医師| %>(これは私が簡単に解決できるエラーメッセージを示しています)
ここでもまた、複数のデータベースを操作する方法を学習しています。私は医者のIDを問題なく現われることができます。しかし、私は医師のdbに移動し、医師のIDに基づいて名前を引き出したいと思います。 (うまくいけば意味があります。)どんな助けもありがとう!ご協力ありがとうございました!
この変更はどこで行う必要がありますか? –
私の編集を参照してください。あなたの意見は修正する必要があります。また、私はあなたが予約 – Brennan
で医師を取得できるので、おそらくあなたの予定コントローラに '@physicians = Physician.all'は必要ないでしょうが、これは正しいアプローチだとは思わないが。患者は本当に予定に属していますか? 「医師」と「患者」の両方が他の「予定」に関連付けることができないことを意味する。この理由から、私はあなたの 'belongs_to'団体は' has_one'であるべきだと思います – Brennan