Ruby on rails 从模型中的关联模型访问属性
我正在尝试将规则应用到一个能力类 我的应用程序中的每个用户(管理员除外,但我们将忽略这一点)都属于另一个模型中定义的实践 出于这样或那样的原因,该机构可能希望暂停访问 我想在我的能力模型中说Ruby on rails 从模型中的关联模型访问属性,ruby-on-rails,cancan,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...
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>
models/practice.rb
belongs_to :user
一个实践有很多用户。
唯一没有实践的用户是那些角色为admin的用户
has_many :users
我认为你们的关系倒退了 应该是“用户有很多(或只有一个)实践”和“实践属于用户”。这意味着外键(在本例中为用户id)实际上在练习表中,而不是在用户表中 试试这个: User.rb
has_one :practice
Practice.rb
belongs_to :user
创建迁移以将用户id添加到实践中
add_column :practices, :user_id, :integer
然后您可以从用户处调用practice,如下所示:
user.practice.x
你说我不能使用是什么意思?你有错误吗?确切地说是哪一个?你能从你的模型中发布一些代码吗?如果你不能调用user.practice.attribute,请粘贴你是如何在用户和实践之间建立关系的。有件事告诉我你以错误的方式建立了关系。你能试一下吗
can:manage,Client,:practice=>{:practice\u id=>user.practice.id}
每个机构(一个公司)都有许多用户。因此,每个用户都有practice_id,表示他们属于哪个机构。我说的对吗?好吧,我想这是有道理的。。。但是,用户可以属于多个机构吗?不可以。想象一下一家公司的机构,该机构的所有用户都在该公司的客户上工作。因此,任何用户都是该机构的雇员,因此只有一个机构。