2011-01-12 9 views
1

ここに私のシナリオです: Subscriber, Subscription, Planhas_many :throughの関係 サブスクライバとプランの3つのモデルがあります。 加入者は、1つのアクティブプランを持つ複数のプランを持つことができます。加入者がプランを選択するたびに、accepts_nested_attributes_for :subscriptionsを使用してプランを保存します。私はフォームから1つの計画を得る。 私の問題は、サブスクリプションテーブルで作成されたレコードのIDを取得することです。アソシエーションで保存されたオブジェクトのIDを取得

現在、私は作成された日付で降順に注文し、最初に結果セットから取得するサブスクライバのすべてのサブスクリプションを検索して検索しています。 これを行う直接的な方法はありますか?

答えて

1

あなたは、コントローラでこれを持っていると仮定します。

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

、あなたはとの最後のサブスクリプションIDを見つけることができます。subscriber.subscriptions.last

@

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

私は現在、このソリューションを現在のコードで使用しています。質問でそれについて言及していないため申し訳ありません。私は今それを更新しました。 – Pravin

-1

が安いソリューションです。 そうしないと、モデルにカスタムメソッドを書き込むことができます。

+2

-1。順序を指定しなければ、 '.last'はデータベースに応じて異なるレコードを与えることができます。 mysqlでは必ずしも最後に作成されたレコードではありません。 – klew

+0

お役立ち情報@ subscriber.subscriptions.last(:order => "created_at") – andrea

関連する問題