覆盖关联结果

时间:2010-02-11 14:57:03

标签: ruby-on-rails ruby

我有3个模特

用户,公司和角色

用户belongs_to角色 用户拥有并属于许多公司 角色has_one用户

通过这种联系我可以做类似的事情:
User.companies< - 我得到用户拥有的所有公司 User.role< - 我得到用户所属的角色

我现在在想,当用户有role_id == 0(admin)时,公司应该返回所有公司(Company.all)。要做到这一点,我想覆盖公司方法,如果用户有role_id == 0,我返回Company.all否则我称为super。那是对的吗?如果是的话,我应该如何实现这个代码? 直接在我的用户模型中?我应该扩展数组吗?

1 个答案:

答案 0 :(得分:1)

我想说一个新方法companies_accessible,它决定了用户可以访问的公司。

def companies_accessible
  role_id == 0 ? Company.all : companies
end

无需污染您现有的方法,特别是如果您以后需要确定管理员所拥有的公司拥有的公司。