Ruby on Rails - 多参数赋值和attr_accessor以及12_hour_time

Rya*_*nJM 3 ruby-on-rails attr-accessor

好的,我正在慢慢掌握这一点,但我还需要一些帮助.

我在我的视图中使用了time_select,因此我正在处理多参数分配.校验.

<%= pt.time_select :time, :twelve_hour => true, :minute_step => 5 %>
Run Code Online (Sandbox Code Playgroud)

但我正在做顽皮的事情,并使用不在数据库中的属性:

attr_accessor time
Run Code Online (Sandbox Code Playgroud)

因此,因为它无法查看数据库,所以它无法拼凑多参数分配应该是什么,因此我收到以下错误:

1 error(s) on assignment of multiparameter attributes
Run Code Online (Sandbox Code Playgroud)

因此,我使用,我发现的信息在这里:

  composed_of :time,
            :class_name => 'DateTime',
            :mapping => [%w(DateTime to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }
Run Code Online (Sandbox Code Playgroud)

其他有用的链接:rubyonrails.org | apidock.com

这消除了错误,但现在问题是我正在使用的插件无法正常运行,我想.我在用http://code.google.com/p/rails-twelve-hour-time-plugin/.目标是,我正在努力让时间选择有3个下降hh:mm am/pm.

所以问题是:我如何调整我composed_of method的顺序才能通过插件正确转换?或者这种疯狂有更好的方法吗?

我不确定我需要什么映射器/构造器/转换器.现在,对象保持小时和分钟,除了小时没有转换为24小时(插件应该照顾,我想).

Rya*_*nJM 5

问题是我没有正确地遵循这篇文章.我应该一直使用时间模型.

  composed_of :time,
            :class_name => 'Time',
            :mapping => [%w(Time to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }
Run Code Online (Sandbox Code Playgroud)

看起来这是一个常见的问题.有关它的更多信息,请查看此链接.给出的建议是:

class Whatever < ActiveRecord::Base
  ...

  attr_accessor :arrival_time
  columns_hash["arrival_time"] = ActiveRecord::ConnectionAdapters::Column.new("arrival_time", nil, "time")
end
Run Code Online (Sandbox Code Playgroud)

我还在研究bug,但是当我得到一些工作时我会更新它.