gpt4 book ai didi

mysql - 如何在模型中存储日期?

转载 作者:行者123 更新时间:2023-11-29 21:21:14 25 4
gpt4 key购买 nike

我正在使用 Rails 4.2.3 和 MySql 5.5.37。我有一个基于以下数据库表的模型......

mysql> desc user_objects;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | YES | MUL | NULL | |
| object | varchar(255) | YES | | NULL | |
| day | date | YES | | NULL | |
| total | int(11) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+

在我的 Controller 中,我正在尝试处理从表单提交的参数,因此我使用这个......

def create
@current_user = User.find(session["user_id"])

puts user_object_params
@user_object = UserObject.new(user_object_params)
puts @user_object.object
puts @user_object.day
puts @user_object.total

尽管第一个“puts”行打印出“{“object”=>“3”,“day”=>“02/28/2016”,“total”=>“77”}”,第三个puts 行 (“@user_object.day”) 不打印任何内容。我需要做什么才能通过“new”调用在模型中创建日期对象?

编辑:这是文件“./app/models/user_object.rb”中 user_object 的定义。

class UserObject < ActiveRecord::Base

validates :day, :presence => true
validates_numericality_of :total
validates :object, :presence => true

def self.find_total_by_user_object_month_and_year(user_id, object, month, year)
sum(:total, :conditions => ['user_id = ?', user_id, 'object = ?', object, 'month(day) = ?', month, 'year(day) = ?', year])
end

def self.find_total_by_user_object_and_year(user_id, object, year)
sum(:total, :conditions => ['user_id = ?', user_id, 'object = ?', object, 'year(day) = ?', year])
end

end

编辑2:响应给出的答案,包括在我的 Controller 中

  puts user_object_params[:day] 
@user_object.day = user_object_params[:day]
puts @user_object.day

为第一个“看跌期权”打印出“02/23/2016”,但随后不会为第二个“看跌期权”打印任何内容。

最佳答案

要打开一个答案,但预计它需要一些迭代。

假设 @user_object.object@user_object.total 行为正确(您需要确认这一点),我怀疑您遇到了挑剔的 Ruby Date(或相关问题) ) 问题。

确保 (a) @user_object.day 以您想要的格式定义(在您的迁移中)(您存储的是字符串、日期还是日期时间?)并且 (b ) user_object_params[:day] 的格式与迁移中定义的类型相匹配。

Ruby 和 Rails 处理日期和日期时间的方式存在众所周知的细微差别(阅读、差异)。也许这就是你问题的根源。

要将日期字符串转换为日期时间,您必须执行以下操作:

DateTime.strptime("06/18/2013", "%m/%d/%Y")

正如所讨论的here 。因此,在执行 @user_object.new(user_object_params) 之前,您可能需要执行以下操作:

user_object_params[:day] = DateTime.strptime(user_object_params[:day], "%m/%d/%Y")

在这里钓鱼,但认为这可能会有所帮助。

关于mysql - 如何在模型中存储日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com