【发布时间】:2010-10-23 21:01:01
【问题描述】:
我有一个 ruby (on rails) 课程:
class User < ActiveRecord::Base
# relationships
belongs_to :current_shipping_address, :class_name => "Address"
belongs_to :subscription
# Validators
validates_presence_of :subscription
validates_presence_of :current_shipping_address
end
我在控制器中执行此操作:
subscription = Subscription.new
address_info = params[:user].delete(:address) rescue {}
@address = Address.new(address_info.merge(:country => "US"))
@user = User.new(params[:user].merge(:first_name => @address.first_name, :last_name => @address.last_name))
@user.subscription = subscription
@user.current_shipping_address = @address
@user.save!
此时,令人难以置信的是,我有一个 @user 已保存在数据库中,但没有 current_shipping_address(尽管进行了验证)。订阅也已保存在数据库中。
地址未保存。
我在这里缺少什么? 1 - 如何在没有验证失败的情况下保存用户? 2 - 为什么地址没有保存?
如何更改此代码以保存地址(如我所料)?
我在 ruby on rails 3 下运行它。
谢谢!
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-3