【发布时间】:2014-10-17 16:47:38
【问题描述】:
我有两个模型:
class Project < ActiveRecord::Base
has_many :ticket
attr_accessible ....
end
class Ticket < ActiveRecord::Base
belongs_to :project
attr_accessible done_date, description, ....
end
在我的 ProjectsController 中,我想创建一个二维散列,以获取一个项目的一个变量,所有已完成的工单(以 done_date 作为键,以描述作为值)。
例如,我想要这样的哈希:
我在寻找什么:@tickets_of_project = ["done_date_1" => ["a", "b", "c"], "done_date_2" => ["d", "e"]]
以及我目前正在尝试的(在 ProjectsController 中)...
def show
# Get current project
@project = Project.find(params[:id])
# Get all dones tickets for a project, order by done_date
@tickets = Ticket.where(:project_id => params[:id]).where("done_date IS NOT NULL").order(:done_date)
# Create a new hash
@tickets_of_project = Hash.new {}
# Make a loop on all tickets, and want to complete my hash
@tickets.each do |ticket|
# TO DO
#HOW TO PUT ticket.value IN "tickets_of_project" WITH KEY = ticket.done_date ??**
end
end
我不知道我的方法是否正确(也许使用 .map 而不是进行 where 查询),但是我如何通过检查索引是否已经存在来完成并将值放入哈希中?
感谢:)
【问题讨论】:
-
这不是一个有效的哈希值。
-
试试
@tickets.all.group_by {|t| t.done_date}
标签: ruby-on-rails ruby arrays ruby-on-rails-3 hash