1

在我的控制器中,我有以下命令序列:

SAVE DATA INTO FIRST TABLE

_get ID of inserted item into table from first step_

SAVE DATA INTO SECOND TABLE WITH ID FROM FIRST COMMAND

if FIRST.save && SECOND.save
 do something

我想知道,如何获取项目的 id,它会立即插入数据库......我试图谷歌搜索,但我找不到这个信息......

提前感谢您的提示

4

3 回答 3

4
# SAVE DATA INTO FIRST TABLE
first_instance = FirstModel.new( :foo => :bar )
first_save = first_instance.save

# _get ID of inserted item into table from first step_
first_instance_id = first_instance.id

# SAVE DATA INTO SECOND TABLE WITH ID FROM FIRST COMMAND
second_save = SecondModel.new( :first_model_id => first_instance_id ).save

if first_save && second_save
  # do something
end
于 2011-06-06T19:52:31.227 回答
1

updated_at您可以通过模型中的字段搜索数据库吗?

获取最新记录:

@model1 = Model1.order("updated_at DESC").limit(1)

或者更好的是,首先保存 Model1:

@model1 = model1.save

分派:

@model2.model1_id = @model1.id

注意:如果您真的想保存特定记录的 ID,找到最后一个并不是最好的方法。

这是因为另一个用户可能会在您插入 Model1 之后和调用 Model2 之前插入另一条记录。

如果您希望两者一起保存或根本不保存,您可以查看事务:http ://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html

如果您在担心 Model2 之前对 Model1 自行保存感到满意,那么只需像我上面所做的那样分配变量。

于 2011-06-06T19:51:27.853 回答
1

保存模型后,您可以访问它的id变量:

@user = User.new
puts @user.id
# => nil
@user.save
puts @user.id
# => 1
于 2011-06-06T19:52:47.927 回答