【问题标题】:undefined method `synchronize' for nil:NilClassnil:NilClass 的未定义方法“同步”
【发布时间】:2013-04-28 01:45:00
【问题描述】:

我刚刚在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 还是我错过了什么?

【问题讨论】:

  • 你能调试或登录@book看看它初始化好吗?
  • @book没问题。显然,只有当模型中包含唯一性验证时才会发生这种情况。我提交了一个错误 (github.com/rails/rails/issues/10454)
  • 我错了,问题是在将空数组分配给关联时,例如@book.genre_ids = []
  • 好的,知道这会很有用=)
  • 我在尝试对所有模型类执行某些操作时遇到此错误,但无意中也尝试对模型类的单例类执行此操作。它例如有方法#attribute_names,但是尝试调用它会遇到这个错误。

标签: ruby-on-rails ruby-on-rails-4 rubygems friendly-id


【解决方案1】:

显然,由于friendlyId gem,它失败了。如果使用friendlyId,可能需要指定rails4-branch。

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

edit:确保从 norman/friendly_id 获取实际的分支/版本。根据自述文件,至少需要branch: 5.0.0-beta 才能使用rails4。

edit2:现在是5.0.0.rc2,正如我所说,确保获得实际的分支/版本,我显然不会每次都更新这个答案有版本更新。另外,阅读 cmets 到这个答案,有很多有用的信息。

【讨论】:

  • 使用此配置部署的问题;这是错误的要点:gist.github.com/bbnnt/6261095/如果有任何证据证明为什么会发生这种情况,那就太好了!
  • 是的,也有。分支变了。使用 `github: norman/friendly_id' 和相应的分支。目前,有“5.0.0.beta”,它还需要在您的控制器或模型中进行一些更新。见github.com/norman/friendly_id#what-changed-in-version-50
  • 从那以后就知道了,谢谢!现在另一个问题;他们说“FriendlyId 4-style finders”仍然可以通过添加规范来使用(在 github 页面上他们的“5.0 版中发生的变化”的开头某处)。问题是,它不起作用。在我这边的东边。不得不添加 Model.friendly.something... 无处不在
  • 这里也一样,看看问题和/或报告一个。
  • 我猜他们可能正在开发一个新版本,因为 rails4 往往被更广泛地使用......无论如何希望如此;到处添加友好并不是那么酷
【解决方案2】:

pduersteler 的回答对我不起作用,并因此错误而失败:

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

自述文件已在 Sep 23, 2013 上更新,其中包含以下内容,安装时没有错误:

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

【讨论】:

  • 你没有读过编辑也没有读过 cmets,因为那是我在那里写的;)
  • 谢谢,很抱歉,这对我来说是全新的 :)(而且很着急)
猜你喜欢
  • 1970-01-01
  • 2011-07-27
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多