我有一个使用 Devise 的 Rails 3.2.x 应用程序。
根据标准的设计功能,用户可以删除他的帐户(有一个按钮可以点击更改密码屏幕)。
如果用户之前在系统中进行过交易,我想防止用户删除他的帐户。
所以我在用户模型中做了以下
before_destroy do
# Only delete if no financial transactions exist
return false if Trxhistory.where(:user_id=>self.id).select(:id).count() != 0
end
它有效,如果不存在交易,用户将被删除,如果交易存在,用户不会被删除。但是:如果用户没有被删除,屏幕仍然显示删除成功消息而不是错误消息。