簡體   English   中英

Rails_Admin多個'用戶'模型+設計

[英]Rails_Admin Multiple 'User' Models + Devise

所以我在我當前的設置中安裝了Devise和rails_admin。 對於管理方案,我現在正在嘗試使用rails。

由於我認為許多管理部門需要多個“用戶”模型,因此在設計和安排他們的關系的正確方法時遇到了麻煩。

所以現在我有一個用戶(設計)模型。

對於用戶模型,我決定將我需要的模型分開(管理員,學生(示例),教授(示例))。

我仔細閱讀並發現STI似乎是解決方案,所以我將它們設置為

class User < ActiveRecord::Base
     devise :database_authenticatable, 
            :recoverable, :rememberable, :trackable, :validatable
end

class Student < User
end

class Professor < User
end

在rails_admin中,用戶CRUD基本完成,使用此設置我設法找到我想要的配置。 例如,創建學生將被識別為用戶。 然而,我現在遇到的問題是我是否有正確的設置,因為我可能確實需要一個學生擁有自己的屬性(比如student_id或major?只是扔東西)。 使用我之前提到的設置只允許我使用User模型屬性創建它們,而不是Student本身。

我還從某個地方讀到我需要在User中有一個列'類型',可以用學生或教授來填充,但是我在組合所有這些解決方案時遇到了麻煩。

關於我現在應該如何進行的任何指示/建議? 非常感激。

如果您決定使用單表繼承:

  • Rails使用type屬性來訪問適當的模型,並自動為您完成。 即,當您執行Student.newtype屬性設置為“Student”

  • 所有繼承類(Student,Professor等)的屬性都存儲在users表中。 這意味着學生和教授都將有majorfees_schedule等(通常不適用於教授)。

這是關於單表繼承的文檔

另一方面,您可能需要考慮多態關聯 ,其中每個表都是獨立的,並且與以下行相關聯:

class User < ActiveRecord::Base
  belongs_to :member, polymorphic: true
  ...
end

class StudentMember < ActiveRecord::Base
  has_one :user, as: :member
  ...
end

class ProfessorMember < ActiveRecord::Base
  has_one :user, as: :member
  ...
end

在此處閱讀有關多態關聯的更多信息

多態關聯似乎更適合您的情況,因為學生,教授,管理員等可能有許多不同的屬性,如果將所有這些屬性轉儲到users表中,它們看起來會非常混亂。

暫無
暫無

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

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