我在这里有一个患者访问报告迁移。我需要添加报告以允许一个患者有很多报告,一个用户(医生)有很多报告。已建立医生患者关系。我如何将报告链接到用户和患者
VisitReport.rb
class CreateVisitReport < ActiveRecord::Migration
def change
create_table :visit_reports do |t|
t.text :date
t.text :report
t.timestamps
end
end
end
Users.rb(医生)
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.timestamps null: false
t.string :email, null: false
t.string :encrypted_password, limit: 128, null: false
t.string :confirmation_token, limit: 128
t.string :remember_token, limit: 128, null: false
end
add_index :users, :email
add_index :users, :remember_token
end
end
Patient.rb
class CreatePatients < ActiveRecord::Migration
def change
create_table :patients do |t|
t.string :name, null: false
t.integer :age, null: false
t.string :phone, null: false
t.string :ailment, null: false
t.datetime :apointment, null: false
t.string :status, null: false
t.belongs_to :user, null: false, foreign_key: true
t.timestamps null: false
end
end
end
答案 0 :(得分:0)
将以下列添加到VisitReport表中
visit_reportable_type
visit_reportable_id
并按如下方式修改模型的关联
class User
has_many :visit_reports, as: :visit_reportable
end
class Patient
has_many :visit_reports, as: :visit_reportable
end
答案 1 :(得分:0)
看,您的VisitReports
方法看起来像这样,名为The has_many :through Association
class CreateVisitReports < ActiveRecord::Migration
def change
create_table :visit_reports do |t|
t.text :date
t.text :report
t.references :user, foreign_key: true
t.references :patient, foreign_key: true
t.timestamps
end
end
end
然后rake db:migrate
,如果你需要使用命令创建,那么命令将如下所示
rails g model VisitReport date:text report:text user:references patient:references
它会生成上面写的相同内容。
模型看起来像这样
class User < ApplicationRecord
has_many :visit_reports, dependent: :destroy
has_many :patients, through: :visit_reports
end
class Patient < ApplicationRecord
has_many :visit_reports, dependent: :destroy
has_many :users, through: :visit_reports
end
class VisitReport < ApplicationRecord
belongs_to :user
belongs_to :patient
end
如果您已经迁移了visit_reports
表并且不希望rollback
,那么此表然后键入您的命令提示符
rails g migration add_index_to_visit_reports
然后转到db/migrate
并更新看起来像这样
class AddIndexToVisitReports < ActiveRecord::Migration
def change
add_reference :user, :visit_report, index: true
add_reference :patient, :visit_report, index: true
end
end
然后rake db:migrate