Учитывая следующую модель, как определить роль пользователя? - PullRequest
0 голосов
/ 16 сентября 2010

Учитывая следующую модель:

class User < AR::B 
  has_many :permissions 
  has_many :projects, :through => :permissions 
end 
class Project < AR::B 
  has_many :permissions 
  has_many :users, :through => :permissions 
end 
class Role < AR::B 
  has_many :permissions 
end 
class Permission < AR::B 
  belongs_to :user 
  belongs_to :project 
  belongs_to :role 
end

В модели user.rb ,, как я могу получить разрешение пользователя на проект?

что-то вроде self.permissions.role?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Вы можете добавить метод экземпляра в модель User, которая приняла проект в качестве аргумента и вернула разрешение.

class User < AR
  def permission_for_project(project)
    permissions.find_by_project_id(project.id)
  end

  def role_for_project(project)
    permission = permissions.find_by_project_id(project.id)

    permission.role unless permission.nil?
  end
end

Тогда используйте это как:

user = User.find(n)
project = Project.find(n)

permission = user.permission_for_project(project)

role = user.role_for_project(project)
1 голос
/ 16 сентября 2010
(the_role = user.permissions.find(:first, project_id => project_id).role) && 
   the_role.name

Должно найти (первое) разрешение, которое пользователь имеет для этого проекта, и получить роль.Если есть роль, она вернет имя, если нет, то вернет ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...