我有一个用户和一个班次。用户有很多转变。
class User < ActiveRecord::Base
has_many :shifts
end
class Shift < ActiveRecord::Base
belongs_to :user
end
我的一个用户无法完成其中一个班次,因此希望与其他用户交换。
最好的方法是什么?似乎我需要同时更新2个班次:需要交换的班次然后转移它需要与之交换。因此,这并不适合用于更改单个模型的edit
和update
操作。
答案 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