1

ユーザーが投稿できる Pinterest に似た、最初のアプリケーションに取り組んでいます。現在、作成されたすべての投稿は即座に投稿されます。管理者が各投稿を承認するまで投稿が公開されないように、管理者の承認プロセスを組み込むにはどうすればよいですか?

そこで、「ピン」の下に「pinreview」というブール値を作成しました。これは、作成された各投稿に対して最初は空白です。コントローラーを編集して、インデックス ビューとショー ビューでパブリックに表示できるピンが、インデックス ビューのページ付けと共に、承認された「ピン」のみを考慮するようにするにはどうすればよいですか? これが可能である場合、管理者が非公開の投稿投稿を表示して「pinreview」チェックボックスをオフにできる管理ページを作成するにはどうすればよいですか?

以下にコードを添付しました。ありがとう!

schema.rb

create_table "pins", :force => true do |t|
    ...
    t.boolean  "pinreview"
end

pins_controller.rb

def index
  @pins = Pin.order("created_at desc").page(params[:page]).per_page(5)

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @pins }
  end
end

def show
  @pin = Pins.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @pin }
  end
end

index.html.erb

<%= render @pins %>
<%= will_paginate @pins %>

_pins.html.erb

<%= pin.name %>
<%= pin.description %>
4

2 に答える 2

7

ピン モデルにスコープを追加します。

scope :approved, where(:pinreview => false)
scope :pending,  where(:pinreview => true)

コントローラーを少しクリーンアップするのに役立つ別のスコープを提案します。

scope :newest, order("created_at desc")

次に、これらのスコープに対してクエリを実行できます。

@pins = Pin.approved.newest.page(params[:page]).per_page(5)

未承認のピンを取得するには、範囲を変更してください:

@pins = Pin.pending.newest.page(params[:page]).per_page(5)
于 2013-04-17T02:07:37.690 に答える