Вопрос

Как мне уничтожить саму ассоциацию и оставить связанные объекты в покое, сохранив при этом 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

Это говорит о том, что Событие :surveyable (ModelSurvey belongs_to Event).Мой вопрос в том, что без необходимости создавать ModelSurveysController, как мне уничтожить ModelSurvey, выходя из Event и Survey один?

Что-то с map.resources :events, :has_many => :model_surveys?Я не совсем понимаю, что делать в этой ситуации.Что должно произойти с маршрутами и что должно произойти в контроллере?Я надеюсь, что URL-адрес может выглядеть примерно так:

/events/:title/model_surveys/:id

Спасибо за вашу помощь, Ланс

Это было полезно?

Решение

В Rails 2.3 у вас есть accepts_nested_attributes_for, который позволил бы вам передать массив ModelSurveys для рассматриваемого события. Если вы позволите уничтожить через декларацию вложенных атрибутов, вы будете иметь возможность пройти event[model_surveys][1][_destroy]=1 и ассоциация будет удалены. Отъезд апи документы .

Другие советы

Домен ресурсов != домен модели


Домен контроллера не такой, как у моделей.Совершенно нормально обновлять несколько моделей, изменяя состояние ресурса.

В вашем случае это означает выполнение PUT или POST либо к событию, либо к опросу, который содержит список идентификаторов для другого.Модель для одного обновит ассоциацию.

ПУТЬ или ОТПРАВИТЬ

Некоторые люди (но не Рой Филдинг) считают, что вам следует использовать PUT для обновления ресурса и повторного предоставления всего состояния, другие считают, что POST с частичным состоянием (аля PATCH) достаточен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top