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

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

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

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

我想在我的能力模型中说

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. 

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

车型/ user.rb

 belongs_to :practice 

车型/ practice.rb

练习有很多用户。 唯一没有练习的用户是角色:admin

 has_many :users 

我认为你的关系倒退了。

它应该是“用户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