sql >> データベース >  >> RDS >> Mysql

Railsアプリのdb/modelに営業時間をどのように保存しますか?

    私は現在、クライアントのディレクトリリストを設定していますが、ユーザーにより多くの柔軟性を提供したいと考えています。したがって:ユーザーに数日間のブロックを設定させます:

    があります (整数1〜7)、開く (時間)、終了 (時間)そしていくつかの店や観光スポットは夏と冬の営業時間を持っているか、彼らは休暇を取ります。 schema.org によると valid_from(日時)とvalid_through(日時)を追加する必要があります。

    この設定により、ユーザーは必要なものを作成できます。

    # migration
    class CreateOpeningHours < ActiveRecord::Migration
      def change
        create_table :opening_hours do |t|
          t.integer :entry_id # your model reference
          t.integer :day
          t.time :closes
          t.time :opens
          t.datetime :valid_from
          t.datetime :valid_through
        end
      end
    end
    

    モデルの例:

    class OpeningHour < ActiveRecord::Base
    
      belongs_to :entry
    
      validates_presence_of :day, :closes, :opens, :entry_id
      validates_inclusion_of :day, :in => 1..7
      validate :opens_before_closes 
      validate :valid_from_before_valid_through 
    
      # sample validation for better user feedback
      validates_uniqueness_of :opens, scope: [:entry_id, :day]
      validates_uniqueness_of :closes, scope: [:entry_id, :day]
    
      protected
      def opens_before_closes
        errors.add(:closes, I18n.t('errors.opens_before_closes')) if opens && closes && opens >= closes
      end
    
      def valid_from_before_valid_through
        errors.add(:valid_through, I18n.t('errors.valid_from_before_valid_through')) if valid_from && valid_through && valid_from >= valid_through
      end
    
    end
    

    その設定で、is_openを簡単に作成できますか?モデルのメソッド。現在、is_openを設定していませんか?方法ですが、誰かが必要な場合は、私にヒットしてください!数日で完成すると思います。



    1. SQLServerでテーブルを作成する方法

    2. Soundex、Jaro Winkler、およびEdit Distance(UTL_MATCH)を使用したOracleの重複列値の照合

    3. MacOS10.9.5へのPsycopg2のインストール中にエラーが発生しました

    4. MySQLでの全文検索:良い点、悪い点、醜い点