Class: Spree::ProductReviewsController

Inherits:
StoreController
  • Object
show all
Defined in:
app/controllers/spree/product_reviews_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/controllers/spree/product_reviews_controller.rb', line 12

def create
  @product_review = Spree::ProductReview.new(product_review_params)
  @product_review.product = @product
  @product_review.purchase_date = spree_current_user.recent_purchase_date_for @product
  @product_review.user = spree_current_user
  @product_review.ip_address = request.remote_ip
  @product_review.locale = I18n.locale.to_s
  @product_review.product_name = @product.name

  authorize! :create, @product_review

  if Spree::ProductReview.exists?(user_id: spree_current_user.id, product_id: @product.id)
    flash[:error] = "You have already reviewed this product."
    redirect_to spree.product_path(@product) and return
  end

  if @product_review.save
    flash[:success] = Spree.t("product_review.flash_messages.create.success")
    redirect_to spree.product_path(@product)
  else
    flash[:error] = Spree.t("product_review.flash_messages.create.failure")
    render :new
  end
end

#destroyObject



41
42
43
44
45
46
47
# File 'app/controllers/spree/product_reviews_controller.rb', line 41

def destroy
  @product_review = Spree::ProductReview.find(params[:id])
  @product_review.destroy
  # Force CanCanCan to reload abilities for the current user
  session[:_csrf_token] = nil
  redirect_to spree.product_path(@product), notice: Spree.t(:review_deleted)
end

#indexObject



37
38
39
# File 'app/controllers/spree/product_reviews_controller.rb', line 37

def index
  @product_reviews = @product.product_reviews.approved.order(created_at: :desc)
end

#newObject



7
8
9
10
# File 'app/controllers/spree/product_reviews_controller.rb', line 7

def new
  @product_review = Spree::ProductReview.new(product: @product)
  authorize! :create, @product_review
end