0
我有表名爲users
,如果我想刪除一些user
(用戶可以添加questions
並添加respondents
(誰都會answer
他questions
)),我需要刪除他,得到他的ID給誰刪除了此人的人。舉例來說:before_destroy在rails中,需要一點幫助!
我有表名爲users
,如果我想刪除一些user
(用戶可以添加questions
並添加respondents
(誰都會answer
他questions
)),我需要刪除他,得到他的ID給誰刪除了此人的人。舉例來說:before_destroy在rails中,需要一點幫助!
當然。
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
現在使用此方法代替「銷燬」方法。 OR 你能堅持回調這樣
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
更改爲適合您的旅行,當然需要!
thaaanks快速響應,但有些錯誤,併爲我工作:(我使用第一個例子和notginh,並使用第二,仍然沒有,等待,第二個檢查我shoudl寫在模型或控制器? – 2011-05-11 12:40:07
看看我有什麼= > ActionController :: UnknownAction(沒有行動響應銷燬。操作:check_if_authenticated,創建,destroy_and_transfer_to,索引和更新): – 2011-05-11 12:49:46
這一切都在模型中 – 2011-05-11 12:51:41