2012-06-04 61 views
0

我是rails新手,並且遇到了使用ActiveRecord解決某些問題的麻煩。在ActiveRecord中創建Ruby中的多維哈希結果

現在,我有三個型號:

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" } } 

我不知道相當如何去創造這個。我的第一個傾向是在其中一個類中創建一個方法(我已經來回轉換了哪一個...現在,我認爲最好在「標記」下提供),該方法遍歷與給定標記匹配的項目,查詢匹配兩者的任務並將它們追加到數組中。

到目前爲止,這還沒有奏效。我完全被難住了。

有關我如何完成此操作的任何想法?是一種方法去適當的方式去或在ActiveRecord內部有一個竅門來創建一個查詢,讓我至少接近這個?

+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 %> 

希望這有助於

+0

這個工作適合你嗎?你能接受答案嗎? – Anil