Mysql
 sql >> Baza danych >  >> RDS >> Mysql

W jaki sposób można przechowywać godziny pracy firmy w bazie danych/modelu aplikacji Rails?

Obecnie konfiguruję listę katalogów dla klienta i chcemy zapewnić użytkownikowi większą elastyczność. A więc:Pozwól użytkownikowi ustawić bloki na dni:

Mamy dzień (liczba całkowita 1-7), otwiera się (czas), zamyka (czas), a niektóre sklepy lub zabytki mają godziny otwarcia letnie i zimowe lub robią wakacje. Według schema.org musisz dodać valid_from (data-godzina) i valid_through (data-godzina).

Dzięki tej konfiguracji użytkownik może tworzyć, co chce:

# 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

Przykład dla modelu:

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

Dzięki tej konfiguracji możesz łatwo utworzyć is_open? w Twoim modelu. Obecnie nie skonfigurowałem is_open? metoda, ale jeśli ktoś potrzebuje, to daj mi cios! Myślę, że skończę to w ciągu najbliższych dni.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odpowiednik daty i godziny w java.sql ? (czy istnieje java.sql.datetime ?)

  2. Łączysz się z bazą danych z rozszerzenia Chrome?

  3. Błąd krytyczny:Nieprzechwycony błąd:Wywołanie niezdefiniowanej funkcji mysql_pconnect()

  4. SQLSTATE[HY093]:Nieprawidłowy numer parametru:liczba powiązanych zmiennych nie odpowiada liczbie tokenów w wierszu 102

  5. Inny sposób na ulepszenie zapytania SQL w celu uniknięcia unii?