問題タブ [acts-as-paranoid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - act_as_paranoid 削除されたユーザーをデバイス サインインで元に戻す
私はRails 3.1.3アプリを持っています。これはdevise
ユーザー認証に使用し、acts_as_paranoid
. パスワードの再作成、ユーザーのサインアップ、およびユーザーのサインイン時にアカウントが削除されないようにしたいので、削除された電子メールを提供した場合は、そのアカウントを取得し、再び有効にしてから、アクション (パスワードの再作成またはサインイン) を続行します。 )。
ただし、Users::SessionsController#create
アクションでは、ユーザーの削除を取り消した後、Unauthorized エラーが発生します (ただし、ユーザーは表示されるはずです)。コードは次のとおりです。
削除取り消しの後に呼び出しを追加してresource.reload
も、何も変わりません。また、もう一度サインインすると、前回の試行で元に戻されたため、ユーザーは通常どおりサインインします。
なぜこうなった?create
1 回の通話で削除を取り消してサインインするにはどうすればよいですか?
ruby-on-rails-3.2 - has_friendly_id がacts_as_paranoid モデルで機能しない
Contact モデルにレコードを追加しているときに、次のエラーが発生します。
連絡先モデルは次のようになります
シナリオは、同様の名前の新しい連絡先が追加され、既存の連絡先が偏執的である場合、 Friendly_id はそのレコードを見つけることができず、同様の名前の新しいスラッグを作成しますが、そのスラッグ名が既に存在するため、連絡先モデルはそれを受け入れません。
Friendly_id にパラノイド レコードも考慮させる方法はありますか。つまり、次のようなものを使用します。
scope => :with_deleted
ruby - Rails act_as_paranoid と has_many :through
だから私は rails3_acts_as_paranoid gem を使っていて、 has_many :through アソシエーションでスコープを制御するのにいくつか問題があります。
例えば
-
-
ここで、users_controller.rb のどこかで、ユーザーに属するすべてのファイルが削除されているかどうか、および/または削除されたフォルダーに属しているかどうかを照会したいとしましょう。だから当然、私は次のようなことをすると仮定します
with_deleted
メソッドは、files.deleted_at IS NULL
...しかし...カーテンの後ろで使用されるフォルダーのdefault_scopeは削除されません。したがって、まだfolders.deleted_at IS NULL
条件があり、deleted_at が null でないフォルダーに属するファイルを取得できません。
私はacts_as_paranoidを使い続けたいと思っています.acts_as_paranoidは私のアプリの他のすべての場所で非常に便利であり、手動フィルタリングや.where_values
配列の要素のポップアウトなどを行わないようにしています. しかし、複雑なスコープの処理や利用可能なメソッドについてはあまり知りません。
ruby-on-rails - act_as_paranoid との関連付けを維持する
私は 2 つのモデルを持っています。そのうちの 1 つはユーザーで、もう 1 つはコメントです。コメントはユーザーに属します。
コントローラーで user.delete を実行すると、deleted_at 列が設定され、レコードが非表示になるという期待される結果が得られます。
私の問題は、ユーザーのコメントの関連付けが null に設定されていることです。したがって、サイトでは、コメントを所有しているユーザーは表示されません。ユーザーの名前が「なし」や「匿名」などではないことをコメントに表示したいと思います。
github https://github.com/goncalossilva/rails3_acts_as_paranoid/blob/rails3.2/lib/acts_as_paranoid/core.rbのソースを見る.
私の場合、削除時にユーザーアカウントを閉鎖したいだけです。クエリに表示されなくなったため、Authlogic はそれらを拒否し、ユーザー インデックス ページには表示されません。ただし、ユーザーが所有するものはすべて、ユーザーが引き続き所有できるようにします(ユーザーが戻ってくる可能性があるためなど)。
act_as_paranoid よりも良い方法はありますか?
ruby-on-rails-3 - rails3_acts_as_paranoid とcarrierwave: 論理的な削除でイメージを保持
rails3_acts_as_paranoidとcarrierwaveの 2 つの gem を使用しています。パラノイドのソフト削除、ハード削除、および回復機能は正常に機能します。しかし、アイテムをソフト削除すると、保存された画像がキャリアウェーブによって削除されます。
イメージが物理的な削除でのみ削除されるように、carrierwave または act_as_paranoid を構成する方法は?
ruby-on-rails-3 - 複数のgemを使用するときにモジュール名が競合する(私の場合:social_streamとrails3_acts_as_paranoid)
私はこれらの2つのgemを使用しています:social_stream(rails engine)とrails3_acts_as_paranoid(lib)。
ホームページを見ようとすると、次のエラーが発生します。
/home/pinouchon/code/sharewizz/webapp/app/views/home/index.html.erbを表示しています。ここで、行#25が発生しています: 初期化されていない定数ActsAsParanoid :: Relation :: Public 抽出されたソース(行#25周辺):
完全なトレース:
それらのgemによって定義された2つのモジュールが同じ名前を共有しているためだと思います:Relation
。
/home/pinouchon/.rvm/gems/ruby-1.9.3-p392@project/gems/rails3_acts_as_paranoid-0.2.5/lib/acts_as_paranoid/relation.rb:
/home/pinouchon/.rvm/gems/ruby-1.9.3-p392@project/gems/social_stream-base-0.21.0/app/models/relation.rb:
/home/pinouchon/.rvm/gems/ruby-1.9.3-p392@project/gems/social_stream-base-0.21.0/app/models/relation/public.rb:
以前は、ソーシャルストリームのみを使用していましたが、モジュール名が競合することはありませんでした。さて、それはあたかもActsAsParanoid::Relation
置き換えているかのようRelation
であり、したがって.../social_stream/.../relation.rb
159行目の問題です。
しかし、驚くべきことは、のRelationモジュールがrails3_acts_as_paranoid
でうまく名前空間化されていることmodule ActsAsParanoid
です。したがってRelation
、グローバルスコープで定義されたsocial_streamに干渉することはありませんが、干渉することはあります。私はおそらく何かが欠けています。
エラーの原因について私は正しいですか?それを修正する方法はありますか?
ruby-on-rails-3 - ThinkingSphinx::SphinxError インデックス item_core、item_delta: クエリ エラー: フィールド 'deleted_at' がスキーマに見つかりません
私はItem
モデルを持っています:
次に、サーバーを停止し、実行してrake ts:rebuild && rake ts:reindex && rake ts:restart
、サーバーを再起動します。そして、私はまだエラーが発生します。
エラーをトリガーするクエリは次のとおりです。
どうしたの ?
注:私はact_as_paranoidを使用しています。私のデータベースは移行され、テーブルitems
には列がありますdeleted_at
。
schema.rb のどこかに:
ruby-on-rails-3 - rails 3.2 と act_as_paranoid の問題による has_many
私は奇妙な行動に直面しています。これが私のシナリオです。
私は新しいメッセージを作成し、その受信者に価値を押し付けています.
上記の操作により、レコードはメッセージに正しく保存されますが、message_recipient レコードのトリガーに失敗します。しかし、 acts_as_paranoid gem を削除して上記のコードを実行すると、正常に動作します。この問題を解決するための回避策はありますか?
解決策 1: Message モデルでnew を呼び出す代わりに、 Message モデルでcreateを使用できます。したがって、レコードが作成され、受信者内にデータをプッシュできます。親レコードを作成し、そのIDを使用して子レコードを作成するのと同じです。したがって、trigerring の必要はなく、正常に動作します。
提案は大歓迎です。
ruby-on-rails - act_as_paranoid ファインダーが「削除された」オブジェクトを条件付きで除外するようにする
通常、acts_as_paranoid では、 や などのファインダーを使用すると、find
null以外の値 (または削除列に名前を付けwhere
たもの) を持つエントリが除外されます。deleted_at
ただし、ユーザーがデータベース内の「削除された」(非表示を参照) エンティティを表示および操作できるようにするユーザー権限を作成しました。find
現状では、 、またはwhere
、または what-have-youを実行するたびに許可を確認する必要があります。その許可を持っているwith_deleted
場合は、 act_as_paranoid ロジックは最初から機能するはずでありwith_deleted
、そのロジックが機能しない場合は常に追加します。
これを達成する方法、またはそれに似た方法ですべてを DRY にする方法はありますか?