从模型中的关联模型访问属性
我正在尝试将规则应用于能力等级
我的应用程序中的每个用户(管理员除外,但我们会忽略它)属于另一个模型中定义的练习。
由于某种原因,可能希望暂停访问。
我想在我的能力模型中说
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