Rails将date_select转换为int值

时间:2012-08-06 21:45:10

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

在Rails 3.x中,我有一个带有int字段“my_int_date”的模型类。我希望int字段由一个表单填充,该表单作为date_select表单元素。

问题是当表单读取date_select值时,它将其作为多参数值发送回来,导致错误

1 error(s) on assignment of multiparameter attributes

无论如何,我可以将它作为日期保存在我的模型中,但是当它被转储到数据库时将其转换为int吗?

2 个答案:

答案 0 :(得分:0)

Ruby可以使用to_i

将Time对象转换为秒
Time.now.to_i # Returns epoc time (s)

如果是字符串,则可以使用方法to_time

'2012-06-01'.to_time.to_i # string to Time object then to epoc time (s)

答案 1 :(得分:0)

这是我如何解决它,

在我的ActiveRecord模型中,我添加了字段

attr_accessible :my_int_date_time

columns_hash["my_int_date_time"] = ActiveRecord::ConnectionAdapters::Column.new("my_int_date_time", nil, "DateTime")

def my_int_date_time
  return TimeHelper.datetime_from_integer(self.my_int_date)
end

def my_int_date_time= val
    self.my_int_date = TimeHelper.datetime_to_integer(val)
end

在我的表单中,我将datetime字段链接到字段my_int_date_time,而不是将其链接到my_int_date