RESTful方式交换2个模型之间的关系

时间:2012-10-04 18:29:45

标签: ruby-on-rails rest updates

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

class User < ActiveRecord::Base
  has_many :shifts
end

class Shift < ActiveRecord::Base
  belongs_to :user
end

我的一个用户无法完成其中一个班次,因此希望与其他用户交换。

最好的方法是什么?似乎我需要同时更新2个班次:需要交换的班次然后转移它需要与之交换。因此,这并不适合用于更改单个模型的editupdate操作。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

更多信息:http://guides.rubyonrails.org/routing.html#adding-more-restful-actions