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>

有什么办法解决这个问题吗?

模型/用户.rb

belongs_to :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)实际上是在练习表而不是用户表中。

尝试这个:

用户.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 回答