Ruby on rails 访问模型属性(STI)时的未定义方法
我有4种型号:Ruby on rails 访问模型属性(STI)时的未定义方法,ruby-on-rails,ruby,web,sti,Ruby On Rails,Ruby,Web,Sti,我有4种型号:患者,管理员,医生,用户患者,管理员和医生扩展用户 // patient.rb class Patient < User end // doctor.rb class Doctor < User end // admin.rb class Admin < User end 对这个问题做了一些研究,并意识到其他使用STI的人也遇到了这个问题。然而,我无法理解任何解决方案和问题的根源。STI和获取属性有什么问题?您应该向模型用户添加父名称字段,因为这是从Acti
患者
,管理员
,医生
,用户
<代码>患者,管理员
和医生
扩展用户
// patient.rb
class Patient < User
end
// doctor.rb
class Doctor < User
end
// admin.rb
class Admin < User
end
对这个问题做了一些研究,并意识到其他使用STI的人也遇到了这个问题。然而,我无法理解任何解决方案和问题的根源。STI和获取属性有什么问题?您应该向模型用户添加父名称字段,因为这是从ActiveRecord::Base继承的字段 STI只处理一个表(在本例中为用户),并添加一个名为“type”的字段,该字段保存保存记录的模型的名称,它为患者记录保存“Patient”,为医生记录保存“Doctor”,等等。所有这些都在同一个表用户中
我希望这有帮助。什么是STI?您是创建迁移来创建父表还是编辑schema.rb?@eirikir我已正确创建了所有模型,并提供了一个类型列来指定其类型。STI是单表继承。我已经正确地创建了我的模型。我的用户模型有一个类型列,指定类型:患者、医生和管理员。但是,我无法访问患者模型的列。我将展开我的回答,您需要在用户表中创建父名称字段,STI对所有模型使用相同的表。
//schema.rb
create_table "patients", force: :cascade do |t|
t.string "fathername"
end