【发布时间】:2010-11-30 20:58:38
【问题描述】:
我相信datetime_select 是黑魔法。我真正想弄清楚的是整个1i,2i,3i,4i... 多个参数的东西。具体来说,它是如何在后端处理的(activerecord,其他的?)。订单号后面的“i”是什么意思?它是类型说明符吗?如果是这样,还有哪些其他可用类型?我已经阅读了 date_helper.rb 的来源,它非常不透明。
这是我的动机:
我的模型中有一个:datetime 列,我想通过两个text_fields 在视图中输入:一个用于日期,一个用于时间。它们需要经过验证、合并在一起,然后存储到日期时间列中。最终,我将使用 javascript 日历将日期输入到日期字段中。
那么有人做过吗?我尝试使用虚拟属性(除了基本的 railscast 之外还没有记录),问题是当创建一个新的 activerecord 对象并具有 nil 属性时,虚拟属性失败(未定义的方法 strftime 用于 nil 类,这是有道理的)。
有人有任何建议或最佳做法吗?谢谢!
【问题讨论】:
-
在 activerecord/base.rb [assign_multiparameter_attributes] 中为需要多个构造函数参数的所有属性类实例化对象。这通过使用这些参数在列或聚合类型对象上调用 new 来工作。即:written_on(1) = "2004",written_on(2) = "6",written_on(3) = "24", 将用 Date.new("2004", "6", “24”)。您还可以在括号中指定类型转换字符,以便在构造函数中使用参数之前对其进行类型转换。使用 i 表示 Fixnum,f 表示浮点数,s 表示字符串,a 表示数组。
-
嗨,Dean,如果您找到了自己的答案,通常的方法是“回答我自己的问题”,这样人们就可以看到问题已得到解决。
-
不能对这个非常合理的问题给予足够的支持
标签: ruby-on-rails validation datetime multiparameter