0

能力クラスにルールを適用しようとしています

私のアプリケーションの各ユーザー (管理者を除くが、それは無視します) は、別のモデルで定義されたプラクティスに属しています。

プラクティスは、何らかの理由でアクセスを停止する必要がある場合があります。

自分の能力モデルで言いたい

if user.practice.suspended? 
 can :read, Client, :practice_id => user.practice_id
else 
can :manage, CLient, :practice_id => user.practice_id
etc....

しかし、何らかの理由で、使用できる一方で

user.practice_id

使えないアビリティモデルで

user.practice.<attribute>

それを回避するためのアイデアはありますか?

models/user.rb

belongs_to :practice

models/practice.rb

練習には多くのユーザーがいます。練習をしない唯一のユーザーは、ロールが :admin のユーザーです。

has_many :users
4

1 に答える 1

0

後ろ向きの関係だと思います。

「User has_many (or has_one) practice」と「Practice belongs_to user」のはずです。これは、foreign_key (この場合は user_id) が実際には user テーブルではなく practice テーブルにあることを意味します。

これを試して:

ユーザー.rb

has_one :practice

練習.rb

belongs_to :user

user_id を追加する移行を作成して練習する

add_column :practices, :user_id, :integer

次に、次のようにユーザーから練習を呼び出すことができます。

user.practice.x
于 2013-10-24T17:28:34.673 に答える