[英]Single Table Inheritance (STI) parent ActiveRecord .subclasses .descendants returns empty
[英]Creating subclasses using Single table Inheritance (STI)
我有User類,並且有Admin和Student類。
學生應該有其他專用的專欄。 請讓我知道如何在Ruby on Rails中使用STI進行此操作。
謝謝!
另外,如何填充用戶表?
在Rails中,通常在User
類上有type
列。 現在,在子類中,您將像這樣從User
類繼承:
class User
end
class Admin < User
end
class Student < User
end
這樣,您就可以利用Rails STI並仍然能夠靈活地為您的子類創建方法。
在這里找到更多信息
但是,為了使其更有條理,您可以將子類放在模型下的文件夾中,這樣
#models/users/admin.rb
module Users
class Admin < User
end
end
#model/users/student.rb
module Users
class Student < User
end
end
現在要使用您的課程,您需要執行Users::Student.find(id)
更新
作為對評論的回應,我認為對於特定於學生的列,最好由一個關聯服務,例如Student.has_one :grade
或諸如此類,這樣您就可以成功地抽象出用戶對象處理常見的User方法。 但是要為Student
和Admin
創建一行,您可以執行Users::Student.create(params)
或Users::Admin.create(params)
,Rails知道如何處理STI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.