这是我的错误我使用得最好,我希望它更新我的sample_qty列,这个表没有id列,所以我做了一个解决方法,但即使这样做,我仍然得到这个错误。
ActiveRecord :: StatementInvalid(OCIError:ORA-01830:日期格式图片在转换整个输入字符串之前结束:SELECT“SAMPLE_QTY”。* FROM“SAMPLE_QTY”WHERE“SAMPLE_QTY”。“EMPLOYEE_ID”='JQIS'和“SAMPLE_QTY” 。“TRANSACTION_DATE”= TO_DATE('2014-11-13 00:00:00 UTC','YYYY-MM-DD HH24:MI:SS')按CREATE_DATE DESC排序: app / controllers / samples_controller.rb:31:在`update'
Rails 3.1.8 Oracle DB
这是我的模特
default_scope order("CREATE_DATE DESC")
set_table_name :sample_qty
set_primary_keys :employee_id, :create_date
attr_accessible :sample_qty, :create_date
belongs_to :labor
paginates_per 20
validates :transaction_date,
date: { after: Proc.new { Time.now },
before: Proc.new { Time.now + 1.day } }
def transaction_date=(new_date)
self[:transaction_date] = Date.strptime(new_date.to_s, "%m/%d/%Y")
end
def date=(new_date)
if new_date.blank?
self[:date] = nil
else
self[:date] = Date.strptime(new_date.to_s, "%m/%d/%Y")
end
end
def create_date=(new_date)
self[:create_date] = Date.strptime(new_date.to_s, "%m/%d/%Y")
end
end
这是我的控制器
def sample_qty
@samples = Samples.find(params[:employee_id, :sample_qty])
end
def edit
@samples = Samples.find(params[:employee_id])
end
def update
@employee_id = params[:id]
@samples.assign_attributes({:create_date => Time.now.strftime("%Y-%m-%d")})
@samples.update_attributes(params[:samples])
@samples.validates_datetime :create_date
respond_with_bip(@samples)
end
end
答案 0 :(得分:0)
看起来你在做:
@samples.assign_attributes({:create_date => Time.now.strftime("%Y-%m-%d")})
但是你要解析不同的日期格式:
Date.strptime(new_date.to_s, "%m/%d/%Y")
其中一个用正斜线而不是破折号分隔。
答案 1 :(得分:0)
在引用的错误消息中,您有
"SAMPLE_QTY"."TRANSACTION_DATE" = TO_DATE('2014-11-13 00:00:00 UTC','YYYY-MM-DD HH24:MI:SS')
如果你可以摆脱UTC
位(包括前面的空白),这就是图片没有相应的位置,它应该可以正常工作。
请参阅Oracle TO_DATE docu。