Rails:确认两个对象同时保存?

时间:2013-03-05 05:15:51

标签: ruby-on-rails relationships

在我的网站上创建用户时,我想要执行User.new实例,但我也需要创建一个Alias.new对象。用户有很多别名。但是,我还需要在保存之前验证没有其他具有该名称的别名。

从控制台我的代码可能如下所示:

u = User.new(:name => "Bob")
a = Alias.new(:name => "SirBob", :user_id => u)

但是这不起作用,因为在我保存之前你没有id。那么如何在保存之前验证两个项目的唯一性?

2 个答案:

答案 0 :(得分:1)

试试这个:

u = User.new  
u.aliases.build

希望这会有所帮助......

答案 1 :(得分:0)

使用

ActiveRecord::Base.transaction do
  u = User.new(:name => "Bob")
  a = Alias.new(:name => "SirBob", :user_id => u)
end

并在Alias模型

上添加validates_uniqueness_of :name

这将解决您的问题。