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
这就是说事件是:surveyable
( ModelSurvey belongs_to Event
)。 我的问题是,无需创建ModelSurveysController
,如何在ModelSurvey
保留Event
和Survey
同时销毁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就足够了。