問題タブ [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.

0 投票する
1 に答える
4355 参照

ruby-on-rails - Rails act_as_paranoid - belongs_to が wi​​th_deleted で動作しない

以下に示すように、belongs_to - has_many 関係を持つ 2 つのモデルがあります (モデルが非常に大きいため、この質問に関連するコードの部分のみを含めました)。

Github の Readme ( https://github.com/goncalossilva/acts_as_paranoid ) によると、これは機能するはずです。

ただし、テスト サイクルの親製品を削除し、test_cycle.product を介してアクセスしようとすると (test_cycle と製品オブジェクトの両方が存在すると仮定)、nil が返されます (モデルに with_deleted: true が含まれているにもかかわらず!) .

削除された製品と同じ test_cycle で test_cycle.product_title を呼び出すと、クエリ「SELECT products.* FROM productsWHERE products. id= 1 LIMIT 1」が実行され、実行時エラーが発生します:「RuntimeError: TestCycle#product_title delegated to product.title,しかし製品はゼロです。」

ただし、データベースで直接クエリを実行すると、製品が見つかります (実際には削除されておらず、acts_as_paranoid によって設定された deleted_at フィールドしかないため)。

そのため、製品モデルの「with_deleted: true」は無視されているようです。なぜこれが起こっているのですか?それとも、これが機能しない理由が他にあるのでしょうか?

私は自分自身を明確にすることを願っています. そうでない場合は、お問い合わせください. ありがとう!

0 投票する
2 に答える
978 参照

ruby-on-rails - Friendly_id と act_as_paranoid が重複したスラッグを作成する

私は現在、モデルでacts_as_paranoidとfriendly_id(5.0.1)を使用しています。モデルを破棄して、同じスラッグを生成する新しいモデルを作成しようとすると、次のようになります。

削除されていないオブジェクトだけでなく、すべてのオブジェクトのスコープ内でスラッグが既に存在するかどうかをチェックするコードを何らかの方法で取得する必要があります。

with_deletedスラッグが既に存在するかどうかを確認するときに使用する Friendly_id を取得するにはどうすればよいですか。スラッグ履歴も使用しているため、さらに複雑になる可能性があることに注意してください。

深く掘り下げると、履歴を使用しているため、オブジェクトがソフト削除されている間にスラッグが完全に削除されていることに気付きました。

したがって、これを防ぐ方法を理解する必要があるだけunscopedです。有効なスラッグを見つけようとするときに、 Friendly_id コード自体が既に使用されているように見えるので、大丈夫です。

0 投票する
1 に答える
2220 参照

ruby-on-rails - RSpec: paranoid2 - フリーズしたハッシュを変更できない

paranoid2 gemを使用するモデルの RSpec テストに取り組んでいます。これはある種のパラノイアまたはacts_as_paranoidです - .delete と .destroy およびその他のものを、(forced: true)パラメーターで強制するまでデータを削除するのではなく、データを削除済みとしてマークする独自のバージョンで上書きします。

私のアプリは問題なく動作しますが、rspec のみに問題があります。

仕様/モデル/slide_spec.rb:

rspec 出力:

/アプリ/モデル/slide.rb:

0 投票する
2 に答える
360 参照

ruby-on-rails-3.2 - 未定義のメソッド「パラノイド?」nil:NilClass の場合

アプリで使用gem 'paranoia', '~> 1.0'していrails 3.2.xます。インストールされているパラノイアのバージョンは 1.3.3 です

recursive: true を実行すると、そのエラーが発生します。

同じエラーが発生しています。

0 投票する
1 に答える
288 参照

ruby-on-rails - act_as_paranoid がモデルを破壊するのはなぜですか?

私は最近、プロジェクトの に「偏執狂的な」宝石を追加しましたUser model。このモデルも使用し"has_secure_password"ます。"acts_as_paranoid"の一番上に配置するまで、これは完全に機能しUser modelます。これで、次の引数エラーが発生しました。

どんなアイデアでも大歓迎です。

ここに私のユーザーモデルがあります:

そして、ここに私のセッションヘルパーがあります:

0 投票する
3 に答える
2427 参照

ruby-on-rails - パラノイアとして行動することは記録を回復しない

管理者モードからオブジェクトを復元しようとしましたが、うまくいきませんでした

何か案が?

0 投票する
3 に答える
2027 参照

ruby-on-rails - Rails act_as_paranoid 移行の問題

Devise と paranoia(acts_as_paranoid) gem には複雑な問題があります。私の User モデルは比較的単純です。

確認可能なオプションなしで、最初に Devise gem を追加しました。その後、この移行で確認可能なオプションを後で追加しました。

ここまでは問題ありません。次に、Paranoia gem とacts_as_paranoidラインを User モデルに追加しました。データベースは現在の状態で問題ありませんが、データベースをリセットして本番データと同期しようとしていますが、ここで問題が発生しています。db:reset を実行すると、上記の移行に失敗します。

acts_as_paranoid問題は、現在のデータベース スナップショットでのみ有効なディレクティブがモデルに含まれていることです。User::deleted_at存在しない以前のデータベース スナップショットにロールバックすると、paranoia gem は削除されていないオブジェクトのみを更新しようとし、クエリは失敗します。

この状況を処理するエレガントな方法について何か考えはありますか?