1

私はキャッシュを使用しており、ページをキャッシュした状態で user_id を保存します。ユーザーがログアウトすると、user_id を使用して特定のユーザーのキャッシュされたページのキャッシュをクリアする必要があります。次の正規表現を使用して、一致した user_id を削除しました

cache_store.delete_matched("*id=#{current_user.id}*")

最初の番号と一致すると、すべての URL が削除されます。たとえば、id=12 を削除したい場合は、すべての URL が削除されます。

"localhost:3000/foo?id=123"
"localhost:3000/foo?id=12"
"localhost:3000/foo?id=129"

id=12 の URL を削除したいのですが、解決方法を教えてください。

4

2 に答える 2

0

試すcache_store.delete_matched("id=#{current_user.id}")

于 2013-04-23T13:39:16.507 に答える
0

この場合、ユーザー ID の後に数字を続けることはできません。

cache_store.delete_matched("id=#{current_user.id}([\D]|$)")

URLこれは、ユーザー ID で終わるか、ユーザー ID の後に数字以外が続くものと一致します。

編集

ShareRegexpal で - ボタンが見つからなかったので、結果を投稿しました。文字列をコピーしてregexに置き換え#{current_user.id}たことに注意してください94。青も黄色も似合います。あなたの例の正しい行だけが一致しているようですね。

ここに画像の説明を入力

編集 2

OP はまだ複数URLの を正常に削除できていないため、別の更新を行います。周囲のコードに何らかの障害があると思われます。このサンプルは動作しています:

id = 94
array = [ "id=94", "id=94a", "id=945" ]
clean = Array.new
regex = Regexp.new('id=' + id.to_s + '([\D]|$)')

for url in array
    if url =~ regex
        clean << url
    end
end

puts clean

それでも問題が解決しない場合は、URLs の削除を担当する関連関数を投稿することを検討してください。また、これらのコンテナを提供してURLください。

于 2013-04-23T12:41:20.967 に答える