Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Anda menyimpan jam bisnis di db/model aplikasi Rails?

Saat ini saya sedang menyiapkan daftar direktori untuk klien dan kami ingin memberi pengguna lebih banyak fleksibilitas. Jadi:Biarkan pengguna mengatur blok selama berhari-hari:

Kami memiliki hari (bilangan bulat 1-7), terbuka (waktu), tutup (waktu) dan beberapa toko atau tempat wisata memiliki jam buka musim panas dan musim dingin, atau mereka membuat liburan. Menurut schema.org Anda harus menambahkan valid_from (datetime) dan valid_through (datetime).

Dengan pengaturan ini, pengguna dapat membuat apa pun yang diinginkannya:

# 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

Contoh untuk 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

Dengan pengaturan itu Anda dapat dengan mudah membuat is_open? metode dalam model Anda. Saat ini saya tidak mengatur is_open? metode, tetapi jika seseorang membutuhkan, beri saya pukulan! Saya pikir saya akan menyelesaikannya dalam beberapa hari ke depan.



  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 LIKE vs LOCATE

  2. Cara Membuat Kunci Utama Komposit di MySQL

  3. bendera 'aktif' atau tidak?

  4. gunakan kondisi If else untuk memilih kolom di mysql?

  5. Mysql Bandingkan dua bidang datetime