我有一个名为users
的表格,如果我要删除一些user
(用户可以添加questions
并添加respondents
(answer
将{ questions
)),我需要删除他,并将他的身份识别给删除此人的人。例如:
答案 0 :(得分:2)
不确定
def destroy_and_transfer_to(user)
transaction do
questions.each do |q|
q.update_attribute(:user_id => user)
end
respondents.each do |r|
r.update_attribute(:user_id => user)
end
destroy
end
end
现在使用此方法代替“destroy”方法。 要么 你可以坚持这样的回调
before_destroy :transfer_to
attr_accessor :user_who_takes_over
private
def transfer_to
if user_who_takes_over
questions.each do |q|
q.update_attribute(:user_id => user_who_takes_over)
end
respondents.each do |r|
r.update_attribute(:user_id => user_who_takes_over)
end
end
end
然后你可以:
@user.user_who_takes_over = current_user
@user.destroy
只是几个想法!祝你好运!
更新:我在上面提供的所有代码都属于您的模型。 在你的控制器中你需要一个破坏方法
控制器中的
def destroy
user = User.find(params[:id])
user.user_who_takes_over = current_user
if user.destroy
flash[:notice] = "User destroyed, all stuff transferred"
else
Rails.logger.debug(user.errors.inspect)
flash[:error] = "Error destroying user"
end
redirect_to :back
end
根据您的需要进行更改!