Ruby on rails 在两个模型之间交换关系的RESTful方法

Ruby on rails 在两个模型之间交换关系的RESTful方法,ruby-on-rails,rest,updates,Ruby On Rails,Rest,Updates,我有一个用户和一个班次。用户有很多轮班 class User < ActiveRecord::Base has_many :shifts end class Shift < ActiveRecord::Base belongs_to :user end class用户

我有一个用户和一个班次。用户有很多轮班

class User < ActiveRecord::Base
  has_many :shifts
end

class Shift < ActiveRecord::Base
  belongs_to :user
end
class用户
我的一个用户无法进行轮班,因此希望与其他用户交换


最好的方法是什么?似乎我需要同时更新2个班次:需要交换的班次,然后是需要交换的班次。因此,这实际上不适合用于更改单个模型的
编辑
更新
操作。

这不适合单个资源的任何默认RESTful路由(成员路由)。一种可能性是添加新的RESTful收集路由:

def change_shift(shift_id_or_object, alt_user)
  shift = Shift.find(shift_id_or_object) unless shift_id_or_object.respond_to? :user
  shift.user = alt_user
  shift
end
更多信息,请访问:

# routes.rb
resources :users do
  collection do
    post 'swap'
  end
end