質問

投稿モデルに属するコメントモデルがあるとします。

新しいコメントインスタンスの作成(new、create、find_or_create_by_xなど)の作成は、投稿がすぐに設定されない限り(パラメーターとして渡すか、コメントを作成するときに常に投稿を参照してください。

投稿に基づいているコメントオブジェクトにデフォルト値を設定したいので、これを行いたいと思います。したがって、投稿参照はすぐに有効である必要があります。

これを達成するための最良の方法は何ですか?ありがとう。

役に立ちましたか?

解決

これが機能するためには、 new あなたはそれをしなければなりません after_initialize:

def after_initialize
  raise "no Post" unless post
end

ただし、コメントがインスタンス化されるたびに実行する必要があるため、過剰なように思えます。デフォルトが適切に設定されていることを保証する書き込みテストと言います。

他のヒント

コメントモデルに検証を追加します。

class Comment < ActiveRecord::Base
  validates_presence_of :post_id
end

次に、以下を使用して新しいコメントを作成します。

@post = Post.find(params[:post_id])

@post.comments.create(params[:comment])
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top