0

所以我有忍者模型,它有許多通過ninja_hovercrafts(它存儲ninja_id和hovercraft_id)的氣墊船。Rails +通過關聯表的簡單角色系統

據我瞭解,這種排列方式應該設置成關聯表只存儲足夠的信息來綁定兩個不同的類。

但我想使用關聯表在我的應用程序上作爲非常簡化的授權中心工作。所以我也希望這個表通知我的系統,如果這個綁定通過表中的「角色」字段使忍者成爲給定氣墊船的飛行員或副駕駛員。

我的問題是:

  1. 這是醜陋的?

  2. 這是正常的嗎?

  3. 是否有方法內置到軌道,可以幫助我自動創建忍者和氣墊船協會的角色?例如,我可以有一個嵌套的表單來創建ninjas和hcs,ninjas_hovercrafts中的角色字段也會被填充嗎?

  4. 如果管理我的應用程序角色這種方式是不是一個好主意,什麼非資源重選擇(我的應用程序正在設計中儘量避免可擴展性問題,如過度的加入,包括等)

謝謝

+0

也許這是沒有正確或錯誤答案的那種問題。人們會害怕浪費他們的時間來詳細說明面臨被降低風險的風險的問題......來吧! :) – user202411 2010-04-11 18:39:59

回答

0

這可能不是回答你完全的問題,但如果你只打算有氣墊船我反而成立了協會這樣

class Hovercraft < ActiveRecord::Base 
    belongs_to :pilot, :class_name => 'Ninja', :foreign_key => 'pilot_id' 
    belongs_to :copilot, :class_name => 'Ninja', :foreign_key => 'copilot_id' 
end 

class Ninja < ActiveRecord::Base 
    has_many :pilotings, :class_name => 'Hovercraft', :foreign_key => 'pilot_id' 
    has_many :copilotings, :class_name => 'Hovercraft', :foreign_key => 'copilot_id' 
end 
兩個角色

現在,如果您的角色不止於此,或者您需要更多靈活性,則可以使用第三個模型將它們鏈接在一起。

class Hovercraft < ActiveRecord::Base 
    has_many :hovercraft_roles 
    has_many :ninjas, :through => :hovercraft_roles 
end 

class HovercraftRole < ActiveRecord::Base 
    belongs_to :hovercraft 
    belongs_to :ninja 
end 

class Ninja < ActiveRecord::Base 
    has_many :hovercraft_roles 
    has_many :hovercrafts, :through => :hovercraft_roles 
end 

隨着HovercraftRole模型表明,如果它是一個「試點」或「副駕駛」角色屬性。