私は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 となりますUser
。Address
Address
無効な場合にRailsに保存しないようにするにはどうすればよいですか?
修正済み: コードに次の行を追加して、これを修正しました。みんなありがとう。
validates_associated :address, :if => :address