我是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中有一个技巧来创建一个让我至少接近这个的查询?
答案 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 %>
我希望这会有所帮助