Я следую этому руководству http://blog.endpoint.com/2012/01/ruby-on-rails-rights-attributes.html, чтобы настроить механизм авторизации для моего приложения rails4.Полиморфная ассоциация в rails4
Я создал модель данных, но не управляю (из консоли), чтобы получить права (через метод all_rights) пользователя.
В модели пользователя, как объект пользователя может называть «self.rights», поскольку права доступны через RightAssignment, а не непосредственно от пользователя?
Мои модели:
class User < ActiveRecord::Base
has_many :right_assignments, as: :subject
has_and_belongs_to_many :groups
has_and_belongs_to_many :roles
def all_rights
rights = [self.rights +
self.groups.collect { |g| g.allowed_rights } +
self.roles.collect { |r| r.rights }]
rights = rights.flatten.uniq.collect { |r| r.action }
rights
end
end
class Group < ActiveRecord::Base
has_many :right_assignments, as: :subject
has_and_belongs_to_many :users
def allowed_rights
self.assignable_rights ? self.rights : []
end
end
class Role < ActiveRecord::Base
has_many :right_assignments, as: :subject
has_and_belongs_to_many :users
end
class RightAssignment < ActiveRecord::Base
belongs_to :right
belongs_to :subject, polymorphic: true
end
class Right < ActiveRecord::Base
has_many :right_assignments
end
Любая идея?