我正在尝试将规则应用于能力等级
我的应用程序中的每个用户(管理员除外,但我们会忽略它)属于另一个模型中定义的练习。
由于某种原因,可能希望暂停访问。
我想在我的能力模型中说出
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>
有什么想法解决这个问题吗?
模型/ user.rb
belongs_to :practice
模型/ practice.rb
练习有很多用户。 唯一没有练习的用户是角色:admin
has_many :users
答案 0 :(得分:0)
我认为你的关系倒退了。
应该是“用户has_many(或has_one)练习”和“练习belongs_to用户”。这表示foreign_key(在本例中为user_id)实际上是在练习表而不是用户表中。
试试这个:
User.rb
has_one :practice
Practice.rb
belongs_to :user
创建迁移以将user_id添加到练习
add_column :practices, :user_id, :integer
然后你可以像这样从用户那里打电话练习:
user.practice.x