Сохранение работает при использовании SQLite, но не на Postgresql Heroku - PullRequest
0 голосов
/ 31 октября 2011

В моем приложении я могу сохранить user_id на моей машине разработки, используя sqlite. Однако, user_id не сохраняется на моем сайте Heroku, который использует Postgresql:

class ReviewsController < ApplicationController

  before_filter :authenticate_user!, :find_product

  def new
    @review = Review.new    
  end

  def create
    @review = @product.reviews.build(params[:review]) 
    @review.user_id = current_user.id 
    if @review.save
      SiteUpdatesMailer.review_added(@review).deliver 
      redirect_to product_path(@product), :notice => 'Thanks for your review!'     
    else
      render :action => :new    
    end
  end

  private

  def find_product
    @product  = Product.find(params[:product_id])    
  end

end

Пользователь должен войти в систему, чтобы добавить отзыв. Должен ли я сохранять user_id другим способом?

1 Ответ

1 голос
/ 31 октября 2011

Вот дикое предположение: у вас есть строковый столбец в Review, у которого есть предел, и вы превышаете этот предел, когда говорите @product.reviews.build(params[:review]). SQLite не обращает внимания на ограничения размера для столбцов varchar, PostgreSQL делает и жалуется, если вы пытаетесь вставить значение, которое больше размера столбца.

И несколько бесплатных советов: не разрабатывайте на SQLite, если вы собираетесь развертывать на Heroku (или в любом другом месте, где не используется SQLite), все базы данных различны, и ORM не защитит вас от этих различий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...