【发布时间】:2016-02-29 20:42:23
【问题描述】:
我使用的是 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 | |
+------------+--------------+------+-----+---------+----------------+
在我的控制器中,我正在尝试处理从表单提交的参数,所以我使用它......
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:响应给出的答案,包括在我的控制器中
puts user_object_params[:day]
@user_object.day = user_object_params[:day]
puts @user_object.day
为第一个“puts”打印“02/23/2016”,但随后没有为第二个“puts”打印任何内容。
【问题讨论】:
-
@user_object.object和@user_object.total的值是否正确? -
UserObject 的类定义是什么,它的职责是什么?那是某种形式的对象吗,或者它是什么?
-
如果您在该列中成功保存了日期,那么您在此处所做的一切都应该有效。
-
我包含了 UserObject 的类定义。它旨在镜像我包含的数据库表。不,我无法成功保存日期列 - 它保存为 null。
-
如果您可以保存其他字段(不确定是否可以 - 这就是我问的原因),我想知道这是否是一个挑剔的 Ruby 日期格式问题。
标签: mysql ruby-on-rails date model