2009-08-28 1 views
1

ごとに複数の役割のためのRails STIスタイルの継承私はRailsのためのSTIの継承の例のビットにまで読んできた、 それは、ユーザの基本クラスから継承する(ユーザーの役割/タイプの私のニーズに合うように見えますが)。複数の役割を持つユーザーをあまりうまく扱えないようです。特に、データベースの型フィールドに依存しているためです。ユーザー

これにはすばやく簡単な回避策がありますか?

答えて

3

STIがユーザー役割/ユーザーのシナリオで適切な解決策であるかどうかはわかりません。ユーザーの役割/種類をユーザーの特定の形態とは考えません。これを行うための別の方法は、has_and_belongs_to_manyを使用することです

class Membership < ActiveRecord::Base 
    belongs_to :user  # foreign key - user_id 
    belongs_to :role  # foreign key - role_id 
end 
class User < ActiveRecord::Base 
    has_many :memberships 
    has_many :roles, :through => :membership 
end 
class Role < ActiveRecord::Base 
    has_many :memberships 
    has_many :users, :through => :membership 
end 

:私は、次のスキーマを持っているでしょう。また、restful_authenticationプラグインをチェックアウトすることもできます。

+2

+1 STIはユーザー役割を実装する方法ではありません。 –

0

アンディと同様に、has_and_belongs_to_manyはこれを行う別の方法です。

注:あなたのデータベースには依然として関連テーブルが必要ですが、モデルからは隠れています。

1

easy_rolesの宝石に問題を回避するには良い方法があります。あなたはgithubでそれを見つけることができます。 他の人がすでにSTIと言っているのは、あなたが自分のものを実装できる方法ではないからです。