sql >> Database >  >> RDS >> Mysql

Hoe zou je de uren van een bedrijf opslaan in de db/model van een Rails app?

Ik ben momenteel bezig met het opzetten van een directorylijst voor een klant en we willen de gebruiker meer flexibiliteit geven. Dus:laat de gebruiker blokken instellen voor dagen:

We hebben een dag (geheel getal 1-7), opent (tijd), sluit (tijd) en sommige winkels of bezienswaardigheden hebben zomer- en winteropeningstijden, of ze maken vakanties. Volgens schema.org je moet een valid_from (datetime) en een valid_through (datetime) toevoegen.

Met deze opstelling kan de gebruiker creëren wat hij wil:

# 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

Voorbeeld voor het model:

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

Met die setup kun je eenvoudig een is_open? methode in uw model. Momenteel heb ik de is_open? methode, maar als iemand het nodig heeft, geef me een hit! Ik denk dat ik het de komende dagen zal afmaken.



  1. mag geen resultatenset van een trigger retourneren mysql

  2. SQL - selecteer rijen met dezelfde waarde in twee kolommen

  3. voorwaardelijke unieke beperking

  4. Gegevens invoegen in SQL Server