RESTful破坏Rails中的多态关联?

我如何破坏关联本身并让对象单独关联,同时保持这个RESTful?

具体来说,我有这些模型:

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

这就是说事件是:surveyableModelSurvey belongs_to Event )。 我的问题是,无需创建ModelSurveysController ,如何在ModelSurvey保留EventSurvey同时销毁ModelSurvey

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并且将删除关联。 查看api文档 。

资源域!=模型域

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

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

PUT或POST

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