2009-08-28 16 views

答えて

4

仮定:

post = Post.find(params[:id]) 

とポストモデルが含まれています。その後、

has_many :comments 

することができます:123はあなたのポストのIDをある

comments = post.comments 
first_comment = comments.first 
+1

ような何かをする必要があると思います。 – aehlke

+0

ちょうどプロセスを説明するために –

+0

素晴らしい! – Elliot

3
Post.find(123).comments.first 

+0

urghは総額が –

+0

のように見えますが、デフォルトではidであり、find(:first)(編集前)と.firstは厄介です –

+0

ありがとうございました。 – aehlke

1

@ post.comments.firstが正常に機能します。 (コントローラのメソッドで@postを設定する必要があります)

しかし、「最初の」というのは、通常、IDで順序付けされた関連付けの最初のことです。 ids autoincrement以来、これは '最初に追加された'または '最も早いコメント'と同じように起こります。しかし、そうである必要はありません。

コメントの関連付けで異なる注文が指定されている場合は、最初にこれを使用します(例:あなたの会合はこのように見えた場合:次に

has_many :comments, :order=>'rating desc' 

、post.comments.firstはあなたに最高の定格コメントを与えるだろうではない(「評価」フィールドは平均格付けを表し、いくつかの値に何らかの形で設定されていると仮定した場合)最初に追加されます。コメントのモデルを仮定し、その場合には

は、タイムスタンプを持っている、あなたはこのような単純なタスクのために不要な変数の割り当てをたくさんだ

@post.comments.find(:first, :order=>'created_at asc') 
関連する問題