0

Post has_many Comments 関連付けがあります。投稿にはブール属性がありますpublished。が false の場合post.published、新しいコメントは有効ではありません。この種の検証を達成するためのベスト プラクティスは何ですか?

この方法でやろうとしましたが、残念ながら正しく動作しません。未公開の投稿に対して新しいコメントを作成することは引き続き可能です。

class Comment < ActiveRecord::Base
  validates :post_id, presence: true, if: :post_is_published

  ...
  def post_is_publised
    post && post.published
  end
end
4

1 に答える 1

1

うーん..コードに構文エラーがあると思います...これを試してください:

class Comment < ActiveRecord::Base
  validates :post_id, :presence => true, :if => :post_is_published

  def post_is_publised
    post.try(:published)
  end
end

コンソール出力を読み、質問をもう一度確認した後:

class Comment < ActiveRecord::Base
  validate :post_has_to_be_published

  def post_has_to_be_published
    unless post.try(:published)
      self.errors.add(:base, "you can add comments only to published posts")
    end
  end
end

未公開の投稿にコメントを追加することを許可したくないことは承知しています。上記のコードはそれを達成するはずです。

于 2012-05-04T06:40:26.967 に答える