當角色與外部模型有不同關聯時,您如何建模用戶角色?當角色與外部模型有不同關聯時,您如何建模用戶角色
我有兩個角色,老師和家長。老師有聯繫學校,家長不要。這使得很難在單一模型中模擬教師和家長。
我不希望他們分開他們的狀態(場)的模式是相同的,他們都擁有一個「有,屬於衆多」家有兒女(HABTM)的關聯。
我一直在使用它解決了我的眼前問題,但最終還是造成了很大問題比較多單表繼承(STI)嘗試。我希望得到一個「繼承的組合」解決方案。
當角色與外部模型有不同關聯時,您如何建模用戶角色?當角色與外部模型有不同關聯時,您如何建模用戶角色
我有兩個角色,老師和家長。老師有聯繫學校,家長不要。這使得很難在單一模型中模擬教師和家長。
我不希望他們分開他們的狀態(場)的模式是相同的,他們都擁有一個「有,屬於衆多」家有兒女(HABTM)的關聯。
我一直在使用它解決了我的眼前問題,但最終還是造成了很大問題比較多單表繼承(STI)嘗試。我希望得到一個「繼承的組合」解決方案。
,如果你想保持一個班級,有條件的關係可以幫助你
class User < AR
has_one :school, conditions: { role: 'teacher' }
end
仍有點古怪,但比性病更好
有條件HAS_ONE關係會爲你工作:
class Role < ActiveRecord::Base
has_one :school, conditions: { name: 'Teacher' }
belongs_to :user
然後你應該能夠做到:
user = User.first
user.role # let's say he is a Teacher
user.role.school # => should return the school
有些文檔約HAS_ONE: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one
您是否考慮過外部授權框架,如XACML?它會讓你根據任何一種模型表達關係。但是我不知道在Ruby中直接支持XACML,所以你必須使用外部引擎。 –
@David,在rails中有像cancan那樣的處理授權的寶石,但我認爲我的問題是在數據庫級別。 – dangerousdave