2

私は2つのクラスを持っているとしましょう

class User
  attr_accessible :name

  has_one :address

  validates :name, :presence => true
  validates_associated :address
end

class Address
  attr_accessible :country, :user_id

  belongs_to :user

  validates :country, :presence => true
  validates :user, :presence => true
end

無効なものを作成しようとするAddressと失敗します(これは良いことです)

a = Address.new
a.valid?  #=> false

しかし、私が無効なユーザーを構築するとAddress、それは合格します(これは悪いです)

u = User.first
u.build_address

u.valid?  #=> true
u.save    #=> true

これにより、country => nil となりますUserAddress

Address無効な場合にRailsに保存しないようにするにはどうすればよいですか?

修正済み: コードに次の行を追加して、これを修正しました。みんなありがとう。

validates_associated :address, :if => :address
4

2 に答える 2

1
class User
  attr_accessible :name

  has_one :address, :validate => true

  validates :name, :presence => true
  validates_associated :address

終わり

于 2013-10-09T13:50:13.993 に答える