Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails4中的多态关联_Ruby On Rails_Ruby On Rails 4_Polymorphism - Fatal编程技术网

Ruby on rails rails4中的多态关联

Ruby on rails rails4中的多态关联,ruby-on-rails,ruby-on-rails-4,polymorphism,Ruby On Rails,Ruby On Rails 4,Polymorphism,我将按照本教程为我的rails4应用程序设置授权机制 我已经创建了数据模型,但没有管理(从控制台)以获得用户的权限(通过all_rights方法) 在用户模型中,用户对象如何调用“self.rights”,因为这些权限是通过RightAssignment而不是直接从用户获得的 我的模型: class User < ActiveRecord::Base has_many :right_assignments, as: :subject has_and_belongs_to_many

我将按照本教程为我的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
class用户

有什么想法吗?

你可以使用
:通过

class User < ActiveRecord::Base
  has_many :right_assignments, as: :subject
  has_many :rights, :through => :right_assignments
  has_and_belongs_to_many :groups
  has_and_belongs_to_many :roles
class用户:权限\u分配
_和_是否属于多个:组
_和_属于_很多角色吗