从ActiveRecord结果在Ruby中创建多维哈希

时间:2012-06-04 01:54:55

标签: ruby-on-rails activerecord rails-models

我是rails的新手,并且在使用ActiveRecord解决一些问题时遇到了麻烦。

现在,我有三种模式:

class Project < ActiveRecord::Base
    attr_accessible :name
    has_and_belongs_to_many :tags
    has_many :tasks
end

class Task < ActiveRecord::Base
    attr_accessible :todo
    has_and_belongs_to_many :tags
    has_many :tasks
end

class Tag < ActiveRecord::Base
    attr_accesible :description
    has_and_belongs_to_many :projects
    has_and_belongs_to_many :tasks
end

我正在尝试创建一个返回属于特定标记的任务的哈希,以便:

Project_Tasks = { 1 => { project.name, "tasks" => { "task 1", "task 2", "task 3" } 
                  2 => { project.name, "tasks" => { "task 1", "task 2", "task 3" } }

我不确定如何创建这个。我的第一个倾向是在其中一个类中创建一个方法(我已经在一个类中来回...现在,我认为最好在&#34;标记&#34;)循环执行项目与给定标记匹配,查询与两者匹配的任务并将它们附加到数组。

到目前为止,这还没有奏效。我完全难过了。

有关如何实现这一目标的任何想法?方法是一种适当的方法,还是在ActiveRecord中有一个技巧来创建一个让我至少接近这个的查询?

1 个答案:

答案 0 :(得分:0)

我试图修复您的模型定义。

class Project < ActiveRecord::Base
    attr_accessible :name
    has_and_belongs_to_many :tags
    has_many :tasks
end

class Task < ActiveRecord::Base
    attr_accessible :todo
    has_and_belongs_to_many :tags
    belongs_to :project
end

class Tag < ActiveRecord::Base
    attr_accesible :description
    has_and_belongs_to_many :projects
    has_and_belongs_to_many :tasks
end

现在您应该能够访问特定项目的数据(在控制器中),如下所示:

@project = Project.find_by_id(1)  # Loaded a project
@tasks = @project.tasks  # all task for this project in an array

要在视图中显示它:

<%= @project.name %><br />
<% @tasks.each do |task| %>
  <%= task.todo %><br />
<% end %>

我希望这会有所帮助