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,我如何销毁,而单独ModelSurvey留下Eventand ?Survey

有什么 map.resources :events, :has_many => :model_surveys?我不太确定在这种情况下该怎么做。路由需要做什么,控制器需要做什么?我希望网址看起来像这样:

/events/:title/model_surveys/:id

谢谢你的帮助,兰斯

4

2 回答 2

3

在 Rails 2.3 中,您可以accepts_nested_attributes_for将一组 ModelSurveys 传递给相关事件。如果您允许通过嵌套属性声明进行破坏,您将能够通过event[model_surveys][1][_destroy]=1并且关联将被删除。查看api 文档

于 2010-02-10T09:35:54.643 回答
1

资源域!= 模型域


控制器的域与模型的域不同。通过更改资源的状态来更新多个模型是非常好的。

在您的情况下,这意味着对事件或调查执行 PUT 或 POST,其中包含另一个 ID 列表。one 的模型将更新关联。

放置或发布

有些人(但不是Roy Fielding)认为您应该使用 PUT 来更新资源并再次提供所有状态,其他人则认为带有部分状态(ala PATCH)的 POST 就足够了。

于 2010-02-10T13:45:29.797 回答