2010-12-10 19 views
0

has_manyに関連付けられた2つのモデルがあります。コメントのテーブルを作成するためのRails3スコープとhas_manyの関連付け

class User < ActiveRecord::Base 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :user 
end 

そして、移行ファイルはこのようなものです:彼らの最新の一つとして重要なコメントを投稿したユーザーを一覧表示するには

class CreateComments < ActiveRecord::Migration 
    def self.up 
    create_table :comments do |t| 
     t.string :body 
     t.boolean :important, :default => false 
     t.references :user 

     t.timestamps 
    end 
    end 
    ... 

、私が試した:ユーザーの

scope :have_important, (joins(:comments) & Comment.order('created_at desc')).where('important = ?', true) 

を。 rb。しかしこれには、重要でないコメントを投稿したユーザーも含まれます。どのようにスコープを定義できますか?

ユニットテストはここにある:

test "Scoped user's latest comment should be important" do 
    User.have_important.each do |user| 
    assert_equal user.comments.last.important, true 
    end 
end 
+0

私はあなたが達成しようとしていることを完全にはわかりません。あなたはそれのためのテスト/スペックを書くことができますか? – iain

+0

ユニットテストが追加されました。関連性のない話題の – JayKay

+0

、あなたはJamiroquaiのフロントマンの後に名前を付けましたか?そのバンドを愛して:) – Samo

答えて

1

名 "have_importantは" 本当に、最新のを意味するものではありません。おそらくあなたが望むのは、重要なものと最近のものの2つの異なるスコープです。それからチェーンを張ってください。

関連する問題