Mysql
 sql >> база данни >  >> RDS >> Mysql

Как бихте съхранили работното време на фирмата в db/модела на приложението Rails?

В момента настройвам списък с директории за клиент и искаме да дадем на потребителя повече гъвкавост. Така че:Оставете потребителя да настрои блокове за дни:

Имаме дени (цяло число 1-7),отваря (час),затваря (време) и някои магазини или забележителности имат лятно и зимно работно време или правят почивки. Според schema.org трябва да добавите valid_from (datetime) и valid_through (datetime).

С тази настройка потребителят може да създава каквото пожелае:

# 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Определете ранг въз основа на множество колони в MySQL

  2. Когато се изпълнява EXPLAIN, ако стойността на полето за ключ не е нула, но Extra е празна, използва ли се ключът?

  3. MySQL - Условен COUNT с GROUP BY

  4. Как обещаният mysql модул ще работи с NodeJS?

  5. MySQL заместващ знак за =- има ли такъв