Ruby on rails Date.today.to_s(:long)未转换为字符串

Ruby on rails Date.today.to_s(:long)未转换为字符串,ruby-on-rails,ruby,rspec,rspec-rails,Ruby On Rails,Ruby,Rspec,Rspec Rails,我正在做一项作业,我根据我们的指示编写了以下方法: def create_todolist(params) due_date = Date.today.to_s(:long) TodoList.create(list_name: params[:name],list_due_date: params[:due_date]) end 但是当我运行rspec测试时,我得到以下错误: 1) Assignment rq03 rq03.2 assignment code has crea

我正在做一项作业,我根据我们的指示编写了以下方法:

def create_todolist(params)
    due_date = Date.today.to_s(:long)
    TodoList.create(list_name: params[:name],list_due_date: params[:due_date])
end
但是当我运行rspec测试时,我得到以下错误:

1) Assignment rq03 rq03.2 assignment code has create_todolist method should create_todolist with provided parameters
     Failure/Error: expect(testList.list_due_date).to eq due_date

       expected: Thu, 07 May 2020
            got: "2020-05-07"

       (compared using ==)

       Diff:
       @@ -1,2 +1,2 @@
       -Thu, 07 May 2020
       +"2020-05-07"

     # ./spec/assignment_spec.rb:177:in `block (4 levels) in <top (required)>'
     # ./spec/assignment_spec.rb:14:in `block (2 levels) in <top (required)>'
起初,我刚刚收到了到期日。今天,我收到了同样的错误,我不知道如何修复它。我想知道这是否是因为我使用的ruby/rails版本与课程创建时(5年前--)使用的版本不同

任何帮助都将不胜感激


谢谢:)

您正在尝试比较日期对象:

due_date = Date.today
使用创建记录时生成的字符串对象:

Date.today.to_s(:long)
如您所见,这些是不同类型的对象:

Date.today.to_s(:long)
=> "May 07, 2020"
Date.today.to_s(:long).class
=> String

Date.today
=> 2020-05-07
Date.today.class
=> Date

Date.today.to_s(:long) == Date.today
=> false

我想出来了。在创建TodoLists表时,我没有将迁移类型指定为:date。因此,默认情况下,到期日设置为字符串。因此,我设置为type:date,并将due_date更改为等于:

due_date = Date.today

感谢您抽出时间来帮助我:)

您的问题不清楚,因为您没有说明您的测试实际做了什么。但是有一件事已经引起了我的注意:您将
Date.today.to_s(:long)
分配给本地变量
due\u Date
但不再从该变量读取数据。对不起,我现在添加了
params[:due\u Date]
没有使用
due\u Date
。它们是两个不同的变量。此外,它还说,
预计:2020年5月7日星期四-获得:“2020-05-07
也许您需要手动转换它?您好,我最初只有``Date.today``但也得到了相同的错误。不太可能是完全相同的错误,因为您处理的是不同类型的对象。你能改回今天的日期并在这里添加你收到的确切错误消息吗?嗨,我知道了!在创建TodoLists表时,我没有将迁移类型指定为:date。因此,默认情况下,到期日设置为字符串。
due_date = Date.today