0

これは、Rails 3 コードに追加したモデルのクラス メソッドです。

class Micropost < ActiveRecord::Base

def self.without_review
    where(review: false)
  end

参考までに、「レビュー」を示す schema.db を次に示します。

 create_table "microposts", :force => true do |t|
    t.text     "content"
    t.boolean  "review",          :default => false
  end

すべての投稿はデフォルトで review=false に設定されていますが、ユーザーが作成直前にチェックボックスをオンにすると、review=true になります。

これは、フラッシュ メッセージがあるコントローラーです。

  def create
    @micropost = current_user.microposts.build(params[:micropost])
    if @micropost.save
      flash[:success] = "Posted"
      redirect_to root_path
    else
      @feed_items = []
      render 'static_pages/home'
    end
  end

review=false の場合は現在と同じ動作が必要ですが、review=true の場合は「投稿済み」ではなく「投稿は審査中です」というメッセージをフラッシュしたい

4

3 に答える 3

0

これらの変更をcreate

  def create
    @micropost = current_user.microposts.build(params[:micropost])
    if @micropost.save
      if @micropost.review 
        # If review is true. The object @micropost is already built with necessary 
        # parameters sent by the form, say whether review is true.
        flash[:notice] = "Post is under review"
      else
        flash[:success] = "Posted"
        redirect_to root_path
      end
    else
      @feed_items = []
      render 'static_pages/home'
    end
  end
于 2013-04-06T18:35:25.523 に答える
0
def create
    @micropost = current_user.microposts.build(params[:micropost])
    if @micropost.save
      flash[:success] = @micropost.review ? "Posted" : "Post is under review"
      redirect_to root_path
    else
      @feed_items = []
      render 'static_pages/home'
    end
  end
于 2013-04-06T18:59:05.663 に答える
0

別の方法は次のとおりです。

  def create
    @micropost = current_user.microposts.build(params[:micropost])
    if @micropost.save
      flash[:success] = "Posted"
      flash[:success] = "Post is under review" if @micropost.review 
      redirect_to root_path
    else
      @feed_items = []
      render 'static_pages/home'
    end
  end
于 2013-04-06T18:39:29.713 に答える