gpt4 book ai didi

ruby-on-rails - 一起列出的 2 个属性的 Rails 事件记录查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:16 25 4
gpt4 key购买 nike

我想创建一个索引任务站点,并希望在同一个列表中列出所有任务(在模型中传入称为 executed_tasks,在模型中传出称为 assigned_tasks),基于 created_at 混合。使用以下代码,我可以为传入和传出任务在彼此下创建 2 个单独的列表,但看起来不太好。我什至不确定是否应该对模型、 Controller 或 View 进行一些更改。

任务.rb

belongs_to :assigner, class_name: "User"
belongs_to :executor, class_name: "User"

用户.rb

has_many :assigned_tasks, class_name: "Task", foreign_key: "assigner_id"
has_many :executed_tasks, class_name: "Task", foreign_key: "executor_id"

任务.controller.rb

def index
@user = current_user
@assigned_tasks = @user.assigned_tasks.order("created_at DESC")
@executed_tasks = @user.executed_tasks.order("created_at DESC")
end

任务/index.html.erb

<div class= "container">
<div class = "row">
<% @assigned_tasks.each do |task| %>
<% unless task.completed? %>
<%= link_to user_task_path(id: task.id) do %>
<%= task.name %>
<% end %>
<%= task.content %>
<%= task.executor.profile.first_name %>
<% end %>
<% end %>
<br />
<br />
<% @executed_tasks.each do |task| %>
<% unless task.completed? %>
<%= link_to user_task_path(id: task.id) do %>
<%= task.name %>
<% end %>
<%= task.content %>
<%= task.assigner.profile.first_name %>
<% end %>
<% end %>
</div>
</div>

最佳答案

在您的用户模型中添加一个方法,该方法将返回两个范围(assigned_tasks 和 excuted_tasks)的组合结果。

用户.rb

  def tasks 
tasks = assigned_tasks.uncompleted.order("created_at DESC")
tasks += executed_tasks.uncompleted.order("created_at DESC")
tasks.sort_by { |h| h[:created_at] }.reverse!
end

任务.controller.rb

def index
@user = current_user
end

查看

<% @user.tasks.each do |task| %>
..
..
<% end %>

关于ruby-on-rails - 一起列出的 2 个属性的 Rails 事件记录查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32613117/

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