2

このRESTfulを維持しながら、関連付け自体を破棄し、関連付けられているオブジェクトをそのままにしておくにはどうすればよいですか?

具体的には、次のモデルがあります。

class Event < ActiveRecord::Base
  has_many :model_surveys, :as => :surveyable, :dependent => :destroy, :include => :survey
  has_many :surveys, :through => :model_surveys
end

class ModelSurvey < ActiveRecord::Base
  belongs_to :survey
  belongs_to :surveyable, :polymorphic => true
end

class Survey < ActiveRecord::Base
  has_many :model_surveys
end

つまり、イベントは:surveyableModelSurvey belongs_to Event)です。私の質問は、を作成する必要なしに、をそのままにして、どうModelSurveysControllerすれば破壊することができるかということです。ModelSurveyEventSurvey

何か map.resources :events, :has_many => :model_surveys?この状況で何をすべきかよくわかりません。ルートで何が起こる必要があり、コントローラーで何が起こる必要がありますか?URLが次のようになることを願っています:

/events/:title/model_surveys/:id

助けてくれてありがとう、ランス

4

2 に答える 2

3

Rails 2.3 ではaccepts_nested_attributes_for、ModelSurvey の配列を問題のイベントに渡すことができます。ネストされた属性宣言で破棄を許可すると、パスが可能にevent[model_surveys][1][_destroy]=1なり、関連付けが削除されます。API ドキュメントを確認してください。

于 2010-02-10T09:35:54.643 に答える
1

リソース ドメイン != モデル ドメイン


コントローラーのドメインは、モデルのドメインと同じではありません。リソースの状態を変更して複数のモデルを更新してもまったく問題ありません。

あなたの場合、それは、もう一方のIDのリストを含むイベントまたは調査のいずれかにPUTまたはPOSTを実行することを意味します。1 つのモデルが関連付けを更新します。

PUT または POST

Roy Fieldingではなく、PUT を使用してリソースを更新し、すべての状態を再度提供する必要があると考える人もいれば、部分的な状態 (ala PATCH) を含む POST で十分だと考える人もいます。

于 2010-02-10T13:45:29.797 に答える