万悪の「delete」、配列のdeleteを慎む

1192 ワード

これまで私のサイトには崩壊的な問題がありました.ユーザーがアップロードした画像が失われます.しかもアルバムと一緒に紛失しました.最初はどこかが誤って削除されたのかと思っていたが、衝突した.長い間調べていたが、結果が出なかった.肝心なのはこのBUGが必ずしも現れるわけではないことだ.そして、私はテストの時に会ったことがありません.
昨日、あるユーザーが登録したばかりで、画像のアップロードを始めました.私は注意します.しばらくして、さもないと、アルバムがなくなりました.とても退屈です.プロジェクトを開きます.logはN久を見ました.異常は見つかりませんでしたね.注:中にはsqlのロゴを入れていません.多すぎます.
しかし、この問題は憂鬱で、長い間憂鬱だった.このユーザーは大丈夫です.また新しいアルバムを作り続け、写真を伝えます.しばらく.またなくなった.これで気がふさぐ.私はsqlのロゴを再開せざるを得ません.そうでなければ、確かにalbum destroyの記録があります.おかしいですね.
そこで、ユーザーが消えたアルバムをバックアップしました.自分でデータに返信してテストをします.(アップロードしたことがないので.RPああRP)
sqlのロゴを見ることで.と各ページで呼び出します.(tailは使いやすいですね)やっとユーザーのトップページに載ったときにアルバムが削除されたことに気づきました.おかしいですね.どうしてこんなことになったの.コントロールを開きます.次の言葉があります.
@photos = @lovetree.show_photos(current_user)

それはきっとこの文の問題に違いない.Lovetreeモデルを開きます.showを見つけるphotos.やっと悟った!
ユーザーのホームページが戻ったため、ユーザーがアクセス権を設定したアルバムを移動します.私が使っている方法は、まずそのユーザーに属するすべてのアルバムを見つけることです.次に、
albums.each{|a| albums.delete(a) unless a.authorize(user)}

本来,ユーザが権限を設定すると,そのアルバムをalbums配列から削除するという意味である.最後に残ったものは表示されます.その結果,配列からアルバムを削除するのではなく,そのアルバムも直接削除することになった.
万悪のdeleteですね.最後にalbums-[a]に変更すればいいです.
とても苦しい経験でした.みんなに注意して!配列deleteを慎む.