0

最近、「投稿」という列に「レビュー」という新しいフィールドを追加しました

Review=false の投稿だけを表示したい。

これを行うために、Posts モデルに正しいスコープを追加しようとしています。

これが私が持っている現在の範囲です。

  default_scope order: 'posts.created_at DESC'
4

2 に答える 2

1
Model < ActiveRecord::Base
  def self.without_review
    where(review: false) # or how ever you have the boolean in your db
  end
end

もちろんスペックも

describe Model do
  describe "::without_review" do
    it 'loads posts without reviews' do
      no_review = Model.create(review: false)
      Model.create(review: true)

      Model.without_reivew.all.should == [no_review]
    end
  end
end

クラスメソッドとチェーンスコープを使用するだけです

于 2013-04-06T04:02:19.953 に答える
0

名前付きスコープを作成できます。

scope :unreviewed, where(:review => false)
于 2013-04-06T04:03:02.593 に答える