2013-10-24 80 views
0

我想一个规则套用到一个能力类访问从相关模型属性模型

在我的应用程序的每个用户(除了管理员,但我们会忽略)belongs_to的做法,在其他模型中定义。

由于某种原因,这种做法可能会因为某种原因而被暂停访问。

我想在我的能力模型

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

实践有许多用户。 谁不会有实践中的唯一用户是那些角色:管理员

has_many :users 
+2

你是什么意思*我不能使用*?你有错误吗?究竟哪一个? – depa

+0

你能从你的模型发布一些代码吗? –

+0

粘贴如何建立用户和实践之间的关系,如果你不能调用user.practice.attribute东西告诉我你已经建立了错误的关系。 – rmagnum2002

回答

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 
+0

每种做法(公司)都会有很多用户。 因此,每个用户都有practice_id,表示他们属于哪种练习。我有没有正确的方法? – Carpela

+0

好吧,我想这是有道理的......用户可以属于多种做法吗? – derekyau

+0

不是。想象一下这家公司的所有用户都来自该公司的客户。所以任何用户都是这种做法的雇员,因此只有1次练习。 – Carpela