Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Bạn sẽ lưu trữ giờ của một doanh nghiệp như thế nào trong db / model của ứng dụng Rails?

Tôi hiện đang thiết lập danh sách thư mục cho một khách hàng và chúng tôi muốn cung cấp cho người dùng sự linh hoạt hơn. Vì vậy:Hãy để người dùng thiết lập các khối trong ngày:

Chúng ta có một ngày (số nguyên 1-7), mở (thời gian), đóng cửa (thời gian) và một số cửa hàng hoặc điểm tham quan có thời gian mở cửa vào mùa hè và mùa đông, hoặc họ thực hiện các kỳ nghỉ. Theo schema.org bạn phải thêm valid_from (datetime) và valid_through (datetime).

Với thiết lập này, người dùng có thể tạo bất kỳ thứ gì mình muốn:

# 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

Ví dụ cho mô hình:

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

Với thiết lập đó, bạn có thể dễ dàng tạo is_open? trong mô hình của bạn. Hiện tại tôi chưa thiết lập is_open? nhưng nếu ai đó cần, hãy cho tôi một bản hit! Tôi nghĩ tôi sẽ hoàn thành nó trong những ngày tới.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lược đồ mã hóa biểu tượng cảm xúc cuối cùng

  2. MySQL và PHP - chèn NULL thay vì chuỗi rỗng

  3. Kết nối từ xa với cơ sở dữ liệu clearDB heroku

  4. Lỗi truy vấn SQL MySQL trong WordPress trong lớp WPDB

  5. Lỗi-Cố gắng bằng phương pháp 'X.set_DbConnection (System.Data.Common.DbConnection)' để truy cập phương thức 'Y.get_Settings ()' không thành công