【问题标题】:Rails 3.2.13: Create method not working on a model in cloned rails app from githubRails 3.2.13:创建方法不适用于从 github 克隆的 rails 应用程序中的模型
【发布时间】:2013-08-01 18:53:15
【问题描述】:

我从 Github 克隆了一个包含 Rails 应用程序的远程存储库,但在尝试创建对象并将其保存到数据库时遇到了不熟悉的错误。

我已经制作了一个注册表单来创建一个新用户(此处称为 Mentor),而不是在提交时创建,我收到所有字段都是空白的错误,当我检查服务器日志时,我看到这个而不是普通的INSERT INTO(也可以在rails控制台中使用Mentor.create):

(0.1ms)  begin transaction
 Mentor Exists (0.2ms)  SELECT 1 AS one FROM "mentors" WHERE "mentors"."email" IS NULL LIMIT 1
(0.1ms)  rollback transaction

我已经运行了rails new ~/cloned_repo,所以应该已经创建了所有必需的 rails 文件。

非常感谢任何帮助。谢谢!

使用控制器代码更新:

 def new
   @mentor = Mentor.new
 end

 def create
  @mentor = Mentor.new(params[:Mentor])
   if @mentor.save
     session[:mentor_id] = @mentor.id
     redirect_to root_url, notice: "Thank you for signing up!"
   else
     render "new"
   end
 end

【问题讨论】:

  • 分享您的一些mentors_controller.rb 代码可能会有所帮助。此外,由于 Mentor 的电子邮件地址已经存在,因此正在发生回滚。您必须验证电子邮件是唯一的,并且表中的项目具有相同的电子邮件地址。
  • 当我在 rails 控制台中调用 Mentor.all 时,我得到一个空数组。由于这个问题,我还没有在应用程序中创建任何数据。
  • 尝试将params[:Mentor]) 更改为params[:mentor]
  • 啊!愚蠢的错误。看起来它现在正在走得更远,但它仍然失败 SQLite3::BusyException: database is locked
  • 试试这个解决方案stackoverflow.com/a/11529884/1335437

标签: sql ruby-on-rails ruby ruby-on-rails-3 github


【解决方案1】:

params[:Mentor]) 更改为params[:mentor]

【讨论】:

  • 另外,为了将来参考,ActiveRecord::Base.connection.execute("BEGIN TRANSACTION; END;") 对于解决问题也很重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2013-10-16
相关资源
最近更新 更多