我有一个帖子has_many评论关联。 Post有布尔属性published
。
如果post.published
为false,则新评论不应有效。
完成此类验证的最佳做法是什么?
我试图通过这种方式做到这一点,但遗憾的是,它无法正常工作。仍然可以为未发布的帖子创建新评论。
class Comment < ActiveRecord::Base
validates :post_id, presence: true, if: :post_is_published
...
def post_is_publised
post && post.published
end
end
答案 0 :(得分: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
据我所知,您不希望允许在未发布的帖子中添加评论。上面的代码应该可以实现。