从模型中的关联模型访问属性

时间:2013-10-24 17:01:55

标签: ruby-on-rails cancan

我正在尝试将规则应用于能力等级

我的应用程序中的每个用户(管理员除外,但我们会忽略它)属于另一个模型中定义的练习。

由于某种原因,可能希望暂停访问。

我想在我的能力模型中说出

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

1 个答案:

答案 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