0

私は Rails を初めて使用し、ActiveRecord でいくつかのことを理解するのに苦労しています。

現在、次の 3 つのモデルがあります。

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

これを作成する方法がよくわかりません。私の最初の傾向は、指定されたタグに一致するプロジェクトをループするクラスの 1 つの内部にメソッドを作成することです (どのクラスを行ったり来たりしています... 現在、「タグ」の下で提供されるのが最適だと思います)。 、両方に一致するタスクのクエリを実行し、それらを配列に追加します。

今日まで、これは機能していません。私は完全に困惑しています。

これを達成する方法について何か考えはありますか?メソッドは適切な方法ですか、または少なくともこれに近づくクエリを作成するための ActiveRecord 内部のトリックはありますか?

4

1 に答える 1

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

これが役立つことを願っています

于 2012-06-04T02:13:38.780 に答える