・ Ruby: 2.5.7 Schienen: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Betriebssystem: macOS Catalina
Folgendes wurde implementiert.
・ Schlanke Einführung ・ Einführung von Bootstrap 3
Terminal
$ rails g model Coupon user_id:integer is_valid:boolean limit:integer
~__create_coupons.rb
class CreateCoupons < ActiveRecord::Migration[5.2]
def change
create_table :coupons do |t|
t.integer :user_id
t.boolean :is_valid, default: true # 「default:Fügen Sie "true" hinzu
t.integer :limit
t.timestamps
end
end
end
Terminal
$ rails db:migrate
user.rb
#Nachtrag
has_many :coupons, dependent: :destroy
coupon.rb
class Coupon < ApplicationRecord
belongs_to :user
enum is_valid: { 'Wirksamkeit': true, 'Ungültig': false }
def self.coupon_create(user)
coupon = Coupon.new(user_id: user.id, limit: 1)
coupon.save
end
def self.coupon_destroy
time = Time.now
coupons = Coupon.all
coupons.each do |coupon|
if coupon.created_at + coupon.limit.days < time && coupon.is_valid == 'Wirksamkeit'
coupon.is_valid = 'Ungültig'
coupon.save
end
end
end
end
enum is_valid: { 'Wirksamkeit': true, 'Ungültig': false }
def self.coupon_create(user)
coupon = Coupon.new(user_id: user.id, limit: 1)
coupon.save
end
def self.coupon_destroy
time = Time.now
coupons = Coupon.all
coupons.each do |coupon|
if coupon.created_at + coupon.limit.days < time && coupon.is_valid == 'Wirksamkeit'
coupon.is_valid = 'Ungültig'
coupon.save
end
end
end
** ◎ Wenn seit der Erstellung des Gutscheins 24 Stunden vergangen sind und der Gutscheinstatus gültig ist, ändern Sie ihn in ungültig und speichern Sie ihn. ** **.
if coupon.created_at + coupon.limit.minutes < time && coupon.is_valid == 'Wirksamkeit'
coupon.is_valid = 'Ungültig'
coupon.save
end
coupons_controller.rb
Terminal
$ rails g controller coupons index
coupons_controller.rb
class CouponsController < ApplicationController
def index
@coupons = Coupon.where(user_id: current_user.id, is_valid: 'Wirksamkeit')
end
end
Dieses Mal werden wir es so implementieren, dass ein Gutschein ausgestellt wird, wenn das Buch erfolgreich veröffentlicht wurde.
books_controller.rb
def create
@book = Book.new(book_params)
@book.user_id = current_user.id
if @book.save
Coupon.coupon_create(current_user) #Nachtrag
redirect_to books_path
else
@books = Book.all
render 'index'
end
end
application.rb
.application.rb
module Bookers2Debug
class Application < Rails::Application
config.load_defaults 5.2
config.time_zone = 'Tokyo' #Nachtrag
end
end
Terminal
$ touch config/initializers/time_formats.rb
time_formats.rb
Time::DATE_FORMATS[:datetime_jp] = '%Y/%m/%d/%H:%M'
slim:coupons/index.html.slim
.row
.col-xs-3
.col-xs-6
table.table
thead
tr
th
|Gutscheinnummer
th
|Titel
tbody
- @coupons.each.with_index(1) do |coupon, index|
tr
td
= index
td
- limit = coupon.created_at + coupon.limit.minutes
= limit.to_s(:datetime_jp)
.col-xs-3
- limit = coupon.created_at + coupon.limit.minutes
= limit.to_s(:datetime_jp)
Gemfile
#Nachtrag
gem 'whenever', require: false
Terminal
$ bundle
Terminal
$ bundle exec wheneverize .
config/schedule.rb
env :PATH, ENV['PATH'] #Geben Sie einen relativen Pfad von einem absoluten Pfad an
set :output, 'log/cron.log' #Legen Sie die Zieldatei für die Protokollausgabe fest
set :environment, :development #Umgebung einstellen
every 1.minute do
runner 'Coupon.coupon_destroy'
end
cron
Terminal
$ bundle exec whenever --update-crontab
crontab -e
➡︎ Bearbeiten Sie cron auf dem Terminal
$ bundle exec when
➡︎ Überprüfen Sie die Cron-Einstellungen
$ bundle exec wann immer --update-crontab
➡︎ Reflect cron
$ bundle exec wann immer --clear-crontab
➡︎ Cron entfernen
Recommended Posts