0

AR には Person クラスと PersonName クラスがあり、has_many の関係があります。ここで、PersonName モデルの形式がアルファベットかスペースかを検証したいと思います。コードは次のとおりです。

class Person < ActiveRecord::Base
  has_many :names, :class_name => "PersonName", :dependent => :destroy
  accepts_nested_attributes_for :names
end

class PersonName < ActiveRecord::Base
  belongs_to :person
  attr_accessible :full, :first, :middle, :last, :maiden, :title, :suffix, :nick
  validates_format_of :full, :first, :middle, :last, :maiden, :title, :suffix, :nick, :with => /^[a-zA-Z\s]*$/, :on => :save
end

validates_format が実行されないようです。私が走るとき

PersonName.create(:full => '@#$@').valid?

コンソールでは true を返します。:on => :create に変更しようとしましたが、それでも true が返されます。何が問題なのですか?Person クラスで何かを指定する必要がありますか?

4

2 に答える 2

0

レールのドキュメントから

Note: use \A and \Z to match the start and end of the string, ^ and $ match the start/end of a line

それはあなたの問題だと思います

于 2013-10-18T18:00:29.810 に答える