タグ

activeとtimeに関するkiyo_hikoのブックマーク (3)

  • Rails ActiveRecord date between

    I need to query comments made in one day. The field is part of the standard timestamps, is created_at. The selected date is coming from a date_select. How can I use ActiveRecord to do that? I need something like: "SELECT * FROM comments WHERE created_at BETWEEN '2010-02-03 00:00:00' AND '2010-02-03 23:59:59'"

    Rails ActiveRecord date between
    kiyo_hiko
    kiyo_hiko 2016/04/19
    自分とこで試したら、Something.where(some_time: Time.now..(Time.now + 1.month)) 的なクエリが普通にかけてキモクールだった
  • Active Supportの日付演算ってなかなか不思議。 | そんなこと覚えてない

    昨日の記事がかなり反響がありまして、みなさまありがとうございます。 関連のある記事を書きたくなりますが、とりあえず、変わらず淡々とメモも残していきたいと思います。ゆるりとGithub入門記事も書きたいです。 ActiveSupportが拡張する日付操作はとても便利です。よく使います。でも、ちょっと黒魔術だなぁって思ったことがあったので紹介します。 Rubyでは日付や時刻クラスのインスタンスと数値が演算できます。 今から1ヶ月後の日付が知りたいのであれば、以下のように書けます。 1.month.since # => 2013-03-07 12:51:18 +0900 1.months.since # => 2013-03-07 12:51:18 +0900 複数形でも単数形でも。 特定の日付からでも同様のことがしたい場合は以下のようになります。 DateTime.new(2013).mont

    kiyo_hiko
    kiyo_hiko 2016/04/18
    Date.today - 1.month - 1.dayのような事ができるという
  • rails 日付や時刻の正当性を validation する - Qiita

    やりたいこと 2014-9-31 などを弾きたい。 結論から ActiveModel::EachValidator を使った Custom Validator を追加します。 gem を使わない理由 gem を使わなくても良いくらいの規模。 rails のバージョンアップに伴う、gem バージョンアップの負債が増えるのがいやだった。 例えば rails v4.1.5 で validates_timeliness を使うと、以下のような deprecated なエラーが出るようになった。 class MyValidator < ActiveModel::Validator def initialize(options={}) super options[:class].send :attr_accessor, :custom_attribute end end . (called from

    rails 日付や時刻の正当性を validation する - Qiita
    kiyo_hiko
    kiyo_hiko 2016/04/07
    自分はYYYYMMDDぐらいで十分だったのでclass DateValidator < ActiveModel::EachValidator; def validate_each(rec, attr, val); unless (begin; DateTime.parse(val.to_s); resucue; false; end); rec.errors.add(attr, options[:message] || :invalid); end; end; end ぐらいで済んだ
  • 1