1

Project と Task という 2 つのリソースがあるとします。プロジェクトには多くのタスクを含めることができます。タスクは 1 つのプロジェクトに属します。また、routes.rb の Project の下に Task がネストされているとします。

map.resources :projects do |project|
  project.resources :tasks
end

この関係をプログラムで発見できますか? 基本的に、任意のオブジェクトを動的にロードし、「親」があるかどうかを判断して、その親をロードする必要があります。

何か案は?

4

2 に答える 2

1

これは逆に使用することのみを意図しているため、ルーティングは役に立ちません。あなたができることは、:parent: との関係をエイリアシングすることです:


class Task
  belongs_to :project
  alias :project :parent
end

次に、この関係を使用して、親オブジェクトが使用可能かどうかを検出します。


if object.respond_to?(:parent)
  # do something
end

さらに、ルートが正しく設定されていれば、ポリモーフィック ルートを使用できます。


polymorphic_url([object.parent, object])
于 2009-01-15T09:48:53.297 に答える
0

上記のコードは、ルートの関係を決定し、パスなどを作成するための適切なヘルパーを生成するのに役立ちます。

確認する必要があるのは、マデルで関係が適切に宣言されていることです。プロジェクト モデルには、次のものが必要です。

has_many :tasks

タスク モデルには、次のものが必要です。

belongs_to :project

設定が完了すると、必要なものを取得する準備が整います。

@task = Task.first

unless @task.project.blank?
  project_name = @task.project.name
end
于 2009-01-15T07:10:38.687 に答える