【问题标题】:A rails migration that specifies the distance between two months..?指定两个月之间距离的 Rails 迁移..?
【发布时间】:2010-05-12 00:21:08
【问题描述】:

我想做两个下拉菜单。开始时间和结束时间。具体来说,我只需要几个月。例如,我想选择一月,然后选择三月,然后让数据库读取这两个月加上二月。

是否有任何开箱即用的迁移可行?

我猜……

脚本/生成迁移 AddMonthsToClass beginDate:datetime #through endDate:datetime

如果我的问题听起来有点迟钝,我提前道歉!对不起! :D

【问题讨论】:

  • 已接受道歉 ;) 没有开箱即用的迁移可以接近。请指定您是要添加数据库列、记录还是只是以某种方式跟踪另一个模型的时间数据?
  • 不完全确定这三个。我的目标是允许用户选择两个不同的月份,并且数据库也会读取其间的几个月。所以(现在我正在进行文本头脑风暴),也许最好只创建几个月的数组。而两个月的选择,也选择了介于两者之间的那些。啊..有什么开箱即用的吗? :D
  • 您到底需要做什么?将月份保存在 db 列中?我不是很明白:/
  • 我需要保存一个数组。所以假设我选择我的开始月份为“一月”,我的结束月份为“四月”,那么我将是 Rails 将“一月、二月、三月和四月”的月份输入到数据库中。

标签: mysql ruby-on-rails activerecord migration sqlite


【解决方案1】:

这可能会对您有所帮助:http://www.francisfish.com/getting_the_number_of_months_between_two_dates_in_rubyrails.htm

得到月数后,可以从这里得到月份名称:

月 = [""、"一月"、"二月"、"三月"、"四月"、"五月"、"六月"、"七月"、"八月"、"九月"、"十月"、"十一月"、 “十二月”] 月[start_date.month, number_of_months]

例如
月[Time.now.month, 5] => [“五月”、“六月”、“七月”、“八月”、“九月”]

编辑:
取而代之的是,您可以使用:

日期::MONTHNAMES[start_date.month, number_of_months]

编辑:
或者,如果您在选择标签中获得月份数字,则可以使用:

日期::MONTHNAMES[start_month_num, end_month_num]

但是,如果 end_month_num 小于 start_month_num,这将失败

这应该有效:

如果 start_month

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多