Ruby on rails 仅对单个对象应用验证-Rails 3

Ruby on rails 仅对单个对象应用验证-Rails 3,ruby-on-rails,validation,Ruby On Rails,Validation,假设我有一个多态的Comment类,我在系统中的许多地方都使用它 类注释true 可访问属性:内容 结束 在这里,我想对评论的内容长度进行验证。我应该如何处理这个问题 1) 使用STI并在子类中添加新的验证-我觉得这是一种过分的做法 2) 扩展控制器中正在创建/更新的单个对象,需要验证。但是如何在不永久扩展其类的情况下实现它呢?您可以尝试这样做(Rails 2.3风格,因为我还没有尝试过Rails 3,但我认为解决方案非常类似): 希望它能有所帮助你能告诉我们更多关于“这一个地方”的信息吗?你是

假设我有一个多态的Comment类,我在系统中的许多地方都使用它

类注释true 可访问属性:内容 结束

在这里,我想对评论的内容长度进行验证。我应该如何处理这个问题

1) 使用STI并在子类中添加新的验证-我觉得这是一种过分的做法 2) 扩展控制器中正在创建/更新的单个对象,需要验证。但是如何在不永久扩展其类的情况下实现它呢?

您可以尝试这样做(Rails 2.3风格,因为我还没有尝试过Rails 3,但我认为解决方案非常类似):


希望它能有所帮助

你能告诉我们更多关于“这一个地方”的信息吗?你是否考虑过只使用HTML
:maxlength=>n
?@Trip,我们应该始终在服务器端检查它,因为一些用户可能会发布值,但不使用你的表单。。。
class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
  attr_accessor :content

  attr_accessor :should_validate_comment_length

  validates_length_of :content, :maximum => 100, :if => :should_validate_comment_length
end
def create
   @comment = #somehow obtain a comment model instance (like from POST)
   @comment.should_validate_comment_length = true
   if @comment.valid?
      ...
end