获取NoMethodError:未定义的方法`to_datetime'为true:TrueClass:当INSERT进入Mysql

时间:2016-09-14 17:51:36

标签: ruby-on-rails

我正在使用: Ruby版本:2.3.1p112 Rails版本:使用WEBrick进行4.0.1版 Mysql版本:5.7.13 Homebrew

这是我的控制器代码:

class AutomationTestsController < ApplicationController

  before_action :set_automation_test, only: [:show, :edit, :update, :destroy]

def create
  params_all=params[:automation_test]
  params_exclude_optional=params_all.except(:parameter10)
  unless params_exclude_optional.values.include?""
    @automation_test = AutomationTest.new(automation_test_params)

  respond_to do |format|
      if @automation_test.save

...

在我的控制器底部我有这个:

private
def set_automation_test
  @automation_test = AutomationTest.find(params[:id])
end

def automation_test_params
  params.require(:automation_test).permit(:Project, :ProjectType, :Status, :parameter1, :parameter2, :parameter3, :parameter4, :parameter4, :parameter5, :parameter6, :parameter7, :parameter8, :parameter9, :parameter10)
end

以下是schema.rb中的代码:

create_table "automation_tests", force: true do |t|
  t.string   "Project"
  t.string   "ProjectType"
  t.string   "Status"
  t.string   "parameter1"
  t.string   "parameter2"
  t.string   "parameter3"
  t.string   "parameter4"
  t.string   "parameter5"
  t.string   "parameter6"
  t.string   "parameter7"
  t.string   "parameter8"
  t.string   "parameter9"
  t.string   "parameter10"
  t.datetime "created_at"
  t.datetime "updated_at"
end

我添加了这个以便能够运行我的迁移:config / initializers / abstract_mysql_adapter.rb

activeSupport.on_load(:active_record) do
class ActiveRecord::ConnectionAdapters::MysqlAdapter
 NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end
end

我意识到save方法已被弃用,但我认为它仍然有效,不是吗?

服务器输出:

NoMethodError: undefined method `to_datetime' for true:TrueClass: INSERT INTO `automation_tests` (`Param1`, ...)

这是尝试INSERT的Rails: SQL(4.3ms)INSERT INTO automation_testsProjectProjectTypeStatuscreated_atparameter1parameter10,{ {1}},parameter3parameter4parameter5parameter6)VALUES(?,?,?,?,?,?,?,?,?,? ,?)[[“Project”,“NissanMipRestAutomation”],[“ProjectType”,“mipresttestautomation”],[“Status”,“READY”],[“created_at”,星期二,2016年9月13日14:24:33 PDT -07:00],[“parameter1”,“full-suite”],[“parameter10”,“”],[“parameter3”,“Environment = Test”],[“parameter4”,“Brand = Nissan”] ,[“parameter5”,“Category = NNA”],[“parameter6”,“Country = US”],[“updated_at”,星期二,2016年9月13日14:24:33 PDT -07:00]]

我看到rails也在创建一个“日期”来注入updated_at和created_at列:[“updated_at”,星期二,2016年9月13日14:24:33 PDT -07:00],但我无法成像这是有问题的。

如果有人对导致这种情况的原因有任何想法,我将非常感谢您的帮助。谢谢。

我终于想通了!我使用的是'mysql'宝石,而且它在使用mysql 5.7.13时遇到了困难 我转而使用gem mysql2 v.0.3.18,它立即起作用。

0 个答案:

没有答案