簡體   English   中英

使用單表繼承(STI)創建子類

[英]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方法。 但是要為StudentAdmin創建一行,您可以執行Users::Student.create(params)Users::Admin.create(params) ,Rails知道如何處理STI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM