Undefined метод `synchronize 'для nil: NilClass

Я только что создал новое приложение с нуля на rails4.0.0.rc1 с помощью 1.9.3-p374 (которое должно работать в соответствии с руководствами).

Однако я не выполняю простой create -action.

class Books
  def create
    @book = Book.new book_params

    if @book.save
      redirect_to @book
    else
      render action: :new
    end
  end

  private

  def book_params
    params.require(:book).permit(:name, :description)
  end
end

Выполнение создания здесь приводит к

undefined method `synchronize' for nil:NilClass

с ошибкой, указывающей на строку if @book.save.

Это из-за 1.9.3 или я что-то пропустил?

Ответ 1

По-видимому, он потерпел неудачу из-за дружественного драгоценного камня. Если вы используете friendlyId, вам может потребоваться указать ветвь rails4.

gem 'friendly_id', github: 'FriendlyId/friendly_id', branch: 'rails4'

изменить. Обязательно получите фактическую ветвь/версию из norman/friendly_id. Согласно readme, для работы с rails4 должно быть не менее branch: 5.0.0-beta.

edit2: теперь это 5.0.0.rc2, как я уже сказал, обязательно получить фактическую ветвь/версию, я не буду, очевидно, обновлять этот ответ каждый раз есть обновление версии. Кроме того, прочитайте комментарии к этому ответу, есть много полезной информации.

Ответ 2

Ответ pduersteler не работал у меня и не удался с этой ошибкой:

fatal: ambiguous argument 'rails4': unknown revision or path not in the working tree.

README была обновлена ​​на 23 сентября 2013 г. со следующим, установленным без ошибок:

gem 'friendly_id', '5.0.0.rc2' # Note: You MUST use 5.0.0 or greater for Rails 4.0+