これらは私の3つのモデルです:ユーザーのためのRubyのRailsの上にhas_many:協会のコントローラを介して
モデル:患者のための
class User < ActiveRecord::Base
has_many :patients, through: :treatments
has_many :treatments
.
.
.
モデル:
:治療のためclass Patient < ActiveRecord::Base
has_many :user, through: :treatments
has_many :treatments, dependent: :destroy
.
.
.
モデル
class Treatment < ActiveRecord::Base
belongs_to :patient
belongs_to :user
validates :patient_id, presence: true
default_scope -> { order(created_at: :desc) }
end
これは私です治療台:
class CreateTreatments < ActiveRecord::Migration
def change
create_table :treatments do |t|
t.date :teartment_date
t.text :remark
t.float :fee
t.references :patient, index: true, foreign_key: true
t.timestamps null: false
end
add_index :treatments, [:patient_id, :created_at]
end
end
私はコントローラを定義して、特定のユーザの患者に属する新しい治療法を作成したいと考えています。
これは私のコントローラである:
def new
@treat = Treatment.new
end
def create
@userpatient = current_user.treatments.build(treat_params)
if @userpatient.save
flash[:success] = "new treatment added"
redirect_to root_url
else
render 'new'
end
end
が、私は新しい治療法を作成したい一方で、これは、私が受信エラーです:
ActiveRecord::UnknownAttributeError in TreatmentsController#create
unknown attribute 'user_id' for Treatment.
をして、これはCURRENT_USERです:
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(cookies[:remember_token])
log_in user
@current_user = user
end
end
end
私はレールを使い慣れていません。基本的な考え方は、ユーザーが特定のpatiに属する治療を受けたいと思っていることですent。
返信いただきありがとうございます。この問題は、参照列を追加することで解決できます。今、私は受け入れませんが、それはいかなる治療も救いません。私はその部分を意味します:
それは保存せず、ただ新しいものを表示します。
1-どのように私は私のコントローラを作成コーディングすることができます
私は2つの質問がありますか?
2私の治療法を患者の「治療」方法で定義して、患者の治療法を検索する方法あなたはUser
has_many :treatments
とそのTreatment
belongs_to :user
ことを言うとき
'treat'テーブルに' user_id'があるはずです。 – Pavan
それを追加するには? – Shahryar
@Pavanが前にコメントに書いたように、マイグレーションを使ってuser_idを追加すると、 'add_reference:treatments、:user、index:true'のような参照をそこに使うことができます。 – unused