Ruby on rails 单个用户角色的Rails关系
我目前正在使用RoR构建一个类似自由职业者的网站,但我被困在某个地方,我的用户表是用Desive生成的,它有一个角色列,可以是管理员、客户或自由职业者。另外,我有一个属于用户的技能表,但我不希望每个用户都有技能,除了作为自由职业者的用户,我该怎么做,我目前正在使用cancancan进行用户授权和设计身份验证,角色是解决此问题或STI的最佳方案,您会建议我如何处理此问题,下面是一个示例代码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
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
课堂技能{其中角色:'自由职业者'}
结束
请记住,这将为任何角色
保存技能
,但它们仅对自由职业者可见。
您还可以使用来检查用户是否是自由职业者 很抱歉,为什么问题被否决了?您需要补充您的问题,请参阅帮助。请显示您已经编写的代码。你被困在哪里?你面临什么问题?