Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 单个用户角色的Rails关系_Ruby On Rails_Ruby_Devise_Cancancan - Fatal编程技术网

Ruby on rails 单个用户角色的Rails关系

Ruby on rails 单个用户角色的Rails关系,ruby-on-rails,ruby,devise,cancancan,Ruby On Rails,Ruby,Devise,Cancancan,我目前正在使用RoR构建一个类似自由职业者的网站,但我被困在某个地方,我的用户表是用Desive生成的,它有一个角色列,可以是管理员、客户或自由职业者。另外,我有一个属于用户的技能表,但我不希望每个用户都有技能,除了作为自由职业者的用户,我该怎么做,我目前正在使用cancancan进行用户授权和设计身份验证,角色是解决此问题或STI的最佳方案,您会建议我如何处理此问题,下面是一个示例代码 class User < ApplicationRecord # Include default

我目前正在使用RoR构建一个类似自由职业者的网站,但我被困在某个地方,我的用户表是用Desive生成的,它有一个角色列,可以是管理员、客户或自由职业者。另外,我有一个属于用户的技能表,但我不希望每个用户都有技能,除了作为自由职业者的用户,我该怎么做,我目前正在使用cancancan进行用户授权和设计身份验证,角色是解决此问题或STI的最佳方案,您会建议我如何处理此问题,下面是一个示例代码

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable,   :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_many :user_roles
  has_many :skills
  has_many :skills, through: :user_skills ## I don't want all users to have skills except the users with the role of freelancer
  has_many :roles, through: :user_roles

  def role?(role)
    roles.any? { |r| r.name.underscore.to_sym == role }
  end

end
class用户

谢谢你的期待

您可以这样做:

class Skill < ApplicationRecord
  belongs_to :user, -> { where role: 'freelancer' }
end
课堂技能{其中角色:'自由职业者'}
结束
请记住,这将为任何
角色
保存
技能
,但它们仅对
自由职业者可见。

您还可以使用来检查用户是否是自由职业者

很抱歉,为什么问题被否决了?您需要补充您的问题,请参阅帮助。请显示您已经编写的代码。你被困在哪里?你面临什么问题?