验证RoR上的类和超类

时间:2010-05-18 01:04:00

标签: ruby-on-rails ruby oop validation

在ruby中,你有一个名为“type”的属性,它是对象的类。 Rails将其存储在名为type的列中的数据库中。所以,如果我有几个博客“类型”,我可以做这样的事情

def create
  @blog = Blog.new(params[:blog])
  @blog[:type] = params[:blog][:type]
  # ...
end

如果我添加这样的人,然后加载它,并询问它的类(例如,在控制台),我会回答正确的类名。

但是,当我之后保存它时,rails将仅运行超类验证器,而不是我在子类中定义的验证器。

我应该如何让rails运行子类验证器?

1 个答案:

答案 0 :(得分:0)

blog.rb

class Blog < ActiveRecord::Base

  belongs_to :type

  validates_associated :type

  # you might also be interested in:
  # accepts_nested_attributes_for :type

end

blogs_controller.rb

class BlogsController < ApplicationController

  def create
    @blog = Blog.new(params[:blog])
    if @blog.save
      # ...
    end
  end

end