2011-01-12 85 views
1

这里是我的场景: 我有三个模型Subscriber, Subscription, Planhas_many :through关系 订阅者和计划之间。 用户可以有一个活动计划的多个计划。每当用户选择一个计划时,我都会使用accepts_nested_attributes_for :subscriptions来保存它。我从表单中得到一个计划。 现在我的问题是我想获得在订阅表中创建的记录的ID。获取与关联保存的对象的ID

目前我正在通过查找订阅者的所有订阅来检索订阅,订阅者在创建日期时降序排列并从结果集中首先取得。 有没有直接的方法来做到这一点?

回答

1

假设你在控制器有这样的:

@subscriber = Subscriber.find(params[:id]) 
@subscriber.update_attributes(params[:subscriber]) 

然后你可以找到过去的订阅ID与:

@subscriber.subscriptions.order("created_at DESC").first.id 
+0

我已经在我当前的代码中使用这个解决方案。抱歉在这个问题中没有提及它。我现在更新了它。 – Pravin 2011-01-12 10:22:37

-1

@ subscriber.subscriptions.last

是一个廉价的解决方案。否则你可以在你的模型中写一个自定义的方法。

+2

-1。如果你没有指定顺序,`.last`可以根据数据库给你不同的记录。在MySQL中,并不总是最后创建的记录。 – klew 2011-01-12 15:41:45

相关问题