投稿を含むレール (4.1.6) ブログ アプリがあります。ユーザー向けのデバイスを使用しており、バージョン管理のためにpaper_trailジェムを統合中です。
paper_trail と統合する前は、各投稿には、create: の先頭にある current_user で埋められた属している :user がありました@post = Post.new(user: current_user)
。ただし、paper_trail にはアイテムの作成者が格納されるため、代わりに @post.originator を使用して作成者にアクセスしたいと考えています。
このブログ アプリでは、サインインしたユーザーのみが投稿を作成できます。バリデーターで @post.originator が存在することを確認する必要がありますが、投稿を検証している間、発信者は空白です (おそらく、投稿がデータベースに作成されるまで paper_trail が紙の証跡データを保存しないため)。
そのため、投稿を作成してバリデーターを実行すると、代わりにオリジネーターを使用すると、発信者がいないため投稿を作成できないというエラーが表示されます。
私が見るオプションは次のとおりです。
- user_signed_in を検証しますか? モデルの作成者 (ユーザー/発信者) を検証しません。
- すべてのモデルで冗長なユーザー フィールドを作成して投稿の作成者を保存し、それを検証に使用する
- 1と2の両方を行う
- どういうわけか(どのように?) paper_trail にモデルの作成者を提供させ、それを検証に使用する
理想的なアプローチは #3 または少なくとも #1 または #2 だと思いますが、#4 を達成する方法があるかどうかを確認したかったのです。
ありがとうアナンド