問題タブ [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-on-rails - Rails act_as_paranoid - belongs_to が with_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 products
WHERE products
. id
= 1 LIMIT 1」が実行され、実行時エラーが発生します:「RuntimeError: TestCycle#product_title delegated to product.title,しかし製品はゼロです。」
ただし、データベースで直接クエリを実行すると、製品が見つかります (実際には削除されておらず、acts_as_paranoid によって設定された deleted_at フィールドしかないため)。
そのため、製品モデルの「with_deleted: true」は無視されているようです。なぜこれが起こっているのですか?それとも、これが機能しない理由が他にあるのでしょうか?
私は自分自身を明確にすることを願っています. そうでない場合は、お問い合わせください. ありがとう!
ruby-on-rails - Friendly_id と act_as_paranoid が重複したスラッグを作成する
私は現在、モデルでacts_as_paranoidとfriendly_id(5.0.1)を使用しています。モデルを破棄して、同じスラッグを生成する新しいモデルを作成しようとすると、次のようになります。
削除されていないオブジェクトだけでなく、すべてのオブジェクトのスコープ内でスラッグが既に存在するかどうかをチェックするコードを何らかの方法で取得する必要があります。
with_deleted
スラッグが既に存在するかどうかを確認するときに使用する Friendly_id を取得するにはどうすればよいですか。スラッグ履歴も使用しているため、さらに複雑になる可能性があることに注意してください。
深く掘り下げると、履歴を使用しているため、オブジェクトがソフト削除されている間にスラッグが完全に削除されていることに気付きました。
したがって、これを防ぐ方法を理解する必要があるだけunscoped
です。有効なスラッグを見つけようとするときに、 Friendly_id コード自体が既に使用されているように見えるので、大丈夫です。
ruby-on-rails - RSpec: paranoid2 - フリーズしたハッシュを変更できない
paranoid2 gemを使用するモデルの RSpec テストに取り組んでいます。これはある種のパラノイアまたはacts_as_paranoidです - .delete と .destroy およびその他のものを、(forced: true)
パラメーターで強制するまでデータを削除するのではなく、データを削除済みとしてマークする独自のバージョンで上書きします。
私のアプリは問題なく動作しますが、rspec のみに問題があります。
仕様/モデル/slide_spec.rb:
rspec 出力:
/アプリ/モデル/slide.rb:
ruby-on-rails-3.2 - 未定義のメソッド「パラノイド?」nil:NilClass の場合
アプリで使用gem 'paranoia', '~> 1.0'
していrails 3.2.x
ます。インストールされているパラノイアのバージョンは 1.3.3 です
recursive: true を実行すると、そのエラーが発生します。
と
同じエラーが発生しています。
ruby-on-rails - act_as_paranoid がモデルを破壊するのはなぜですか?
私は最近、プロジェクトの に「偏執狂的な」宝石を追加しましたUser model
。このモデルも使用し"has_secure_password"
ます。"acts_as_paranoid"
の一番上に配置するまで、これは完全に機能しUser model
ます。これで、次の引数エラーが発生しました。
どんなアイデアでも大歓迎です。
ここに私のユーザーモデルがあります:
そして、ここに私のセッションヘルパーがあります:
ruby-on-rails - パラノイアとして行動することは記録を回復しない
管理者モードからオブジェクトを復元しようとしましたが、うまくいきませんでした
何か案が?
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 は削除されていないオブジェクトのみを更新しようとし、クエリは失敗します。
この状況を処理するエレガントな方法について何か考えはありますか?