您好,我正在尝试在rails应用程序中创建一个打开或关闭的显示我有两个模型Establishments和Opentimes。这是我的数据库表。我使用MySQL作为我的数据库。
create_table "establishments", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.string "name"
t.string "tagline"
t.text "description", limit: 65535
t.string "postcode"
t.string "address_line_1"
t.string "address_line_2"
t.string "address_line_3"
t.string "parish"
t.string "phone_number"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_establishments_on_user_id", using: :btree
end
create_table "opentimes", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "day"
t.string "label"
t.time "open"
t.time "closed"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "establishment_id"
end
我在两个模型之间建立了关系并嵌套了路线。
Rails.application.routes.draw do
devise_for :users
resources :establishments do
resources :opentimes
end
root to: "establishments#index"
end
这是我尝试执行的方法,但在我的机构模型中无效。
class Establishment < ApplicationRecord
belongs_to :user
has_many :opentimes
def open?
day_of_week_number = Time.current.strftime("%u")
opentime = @opentimes.find_by(day: day_of_week_number)
if (opentime.open.strftime("%H:%M") >= Time.current.strftime("%H:%M")) && (Time.curent.strftime("%H:%M") < opentime.closed.strftime("%H:%M"))
'Open'
else
'Closed'
end
end
end
如果有人能帮助我并指出我正确的方向,我将非常感激。请原谅我,如果我离开这里,我是铁轨和编程的新手。非常感谢提前。
答案 0 :(得分:0)
您的情况有误并且有错字。编码完全像我用英语说的那样:
如果current_time
超过(大于)开放时间,则会打开:
Time.current.strftime("%H:%M") >= opentime.open.strftime("%H:%M")
如果current_time
在结束时间之前(小于),则会打开:
Time.current.strftime("%H:%M") < opentime.closed.strftime("%H:%M")
结合这两个,让我知道它是如何工作的。您的第一个不平等是错误的,并且您在第二个中将current
拼写为curent
。