0

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

class User < ActiveRecord::Base
  has_many :shifts
end

class Shift < ActiveRecord::Base
  belongs_to :user
end

我的一个用户不能做他们的一个班次,所以想和另一个用户交换它。

什么是最好的方法来平静地做到这一点?看来我需要同时更新 2 个班次:需要交换的班次,然后是需要交换的班次。因此,这并不真正适合用于更改单个模型的editand操作。update

4

2 回答 2

1

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

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

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

于 2012-10-04T18:51:45.867 回答
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
于 2012-10-04T18:41:33.150 回答