gpt4 book ai didi

mysql - 在选择标签中显示当前用户的数据及其名称

转载 作者:行者123 更新时间:2023-11-30 22:14:17 25 4
gpt4 key购买 nike

我想根据通过导航栏传递的参数值及其在选择标签中的名称显示当前用户(经理)的数据,用户有两个角色(“用户”、“经理”)或枚举角色(0、1)。这是我在导航栏中给出的链接 -

%li= link_to 'Timesheet', is_manager? ? timesheet_path(user_id: current_user.id) : timesheet_path, class: navlink_class('timesheets')

但在 Controller 中它变得越来越复杂,因为我使用的查询是这些 -

    @begin_date = params[:begin_date].present? ? Date.parse(params[:begin_date]) : Date.today.beginning_of_month
@end_date = params[:end_date].present? ? Date.parse(params[:end_date]) : Date.today.end_of_month
begin_datetime = @begin_date.beginning_of_day
end_datetime = @end_date.end_of_day
@user_tasks = Task.joins(:task_time_trackers).where("(task_time_trackers.created_at BETWEEN ? AND ?)",begin_datetime, end_datetime ).distinct.order("id ASC")
user_trackers = TaskTimeTracker.joins(:task).where("(task_time_trackers.created_at BETWEEN ? AND ?)",begin_datetime, end_datetime )
u_id = nil
u_id = params[:u_id] if (params[:u_id] && params[:u_id] != 'all')
u_id = current_user.id if current_user.role == 'user'
unless u_id.nil?
@user_tasks = @user_tasks.where( task_time_trackers: { user_id: u_id})
user_trackers = user_trackers.where( task_time_trackers: { user_id: u_id})
end

最后是我使用的 select 标签 -

select_tag(:u_id, options_for_select(User.user_for_select(current_user), selected: params[:u_id]), class: "input-sm form-control", onchange: "this.form.submit();")

用户模型 -

      class << self
def user_for_select(user)
self
.pluck("CASE WHEN id = #{user.id} THEN 'Me' ELSE name END AS name, id")
.unshift(['All', 'all'])
end
end

最佳答案

我不知道为什么您需要在选择列表中加载 current_user。但是您可以在用户模型中自定义选择,如下所示:

def user_for_select(user)
self
.where(id: user.id)
.pluck("CASE WHEN id = #{user.id} THEN 'Me' ELSE name END AS name, id")
end
end

编辑取决于评论:

在用户模型中添加如下方法:

def is_manager?
self.role == "manager"
end

然后更新选择如下:

def user_for_select(user)
if user.is_manager?
self
.pluck("CASE WHEN id = #{user.id} THEN 'Me' ELSE name END AS name, id")
.unshift(['All', 'all'])
else
self
.where(id: user.id)
.pluck("CASE WHEN id = #{user.id} THEN 'Me' ELSE name END AS name, id")
end
end

关于mysql - 在选择标签中显示当前用户的数据及其名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38988316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com