具有两个用户模型的邮箱程序
Mailboxer with two user models
我使用 Devise 进行用户身份验证并创建模型、学生和教师。现在,我想使用邮箱。使用邮箱,我们只需要将 acts_as_messageable
添加到两个模型。但是,我不太确定如何设置控制器。这是我当前的控制器:
class ConversationsController < ApplicationController
before_action :authenticate_student!
before_action :authenticate_teacher!
before_action :get_mailbox
def index
@conversations = @mailbox.inbox.paginate(page: params[:page], per_page: 10)
end
private
def get_mailbox
@mailbox = current_student.mailbox || current_teacher.mailbox
end
end
有没有什么方法可以将学生和教师模型组合到一个范围内,比如将它们捆绑在一起,这样我们就可以调用 "user" 来获得两个模型?欢迎任何其他解决方案。
如果您有两个 Devise 模型,定义自定义 current_user
方法会很方便:
# in application_controller.rb
def current_user
if current_student
current_student
else
current_teacher
end
end
helper_method :current_user
附带说明一下,我建议您使用 Rolify + Pundit 的单个用户模型和角色进行授权。最好让 Devise 完成其身份验证工作,您可以为用户类型特定信息创建其他模型(即 student_profile.rb)。这会让你的代码更干燥,让你省去很多麻烦。
我使用 Devise 进行用户身份验证并创建模型、学生和教师。现在,我想使用邮箱。使用邮箱,我们只需要将 acts_as_messageable
添加到两个模型。但是,我不太确定如何设置控制器。这是我当前的控制器:
class ConversationsController < ApplicationController
before_action :authenticate_student!
before_action :authenticate_teacher!
before_action :get_mailbox
def index
@conversations = @mailbox.inbox.paginate(page: params[:page], per_page: 10)
end
private
def get_mailbox
@mailbox = current_student.mailbox || current_teacher.mailbox
end
end
有没有什么方法可以将学生和教师模型组合到一个范围内,比如将它们捆绑在一起,这样我们就可以调用 "user" 来获得两个模型?欢迎任何其他解决方案。
如果您有两个 Devise 模型,定义自定义 current_user
方法会很方便:
# in application_controller.rb
def current_user
if current_student
current_student
else
current_teacher
end
end
helper_method :current_user
附带说明一下,我建议您使用 Rolify + Pundit 的单个用户模型和角色进行授权。最好让 Devise 完成其身份验证工作,您可以为用户类型特定信息创建其他模型(即 student_profile.rb)。这会让你的代码更干燥,让你省去很多麻烦。