・TCAREは2週間経過するとworkersからは見られなくなる
・NGリストは電話番号項目にNGと入力しておく。NGだけは重複を通るようにしておく
・ドラフト:既に入っているデータは全て公開にしてから次回作業インポートは全てドラフト必須へ
This README would normally document whatever steps are necessary to get the application up and running.
Things you may want to cover:
-
Ruby version
-
System dependencies
-
Configuration
-
Database creation
-
Database initialization
-
How to run the test suite
-
Services (job queues, cache servers, search engines, etc.)
-
Deployment instructions
-
...
create staff model for [弊社管理者] role
rails g devise Staffcreate views set for staff model
rails g devise:views staffsand also change config/initializers/devise.rb
config.scoped_views = trueset redirector like the following in ApplicationController(app/controllers/application_controller.rb) as well
- User
- Staff
2点のdevise利用したモデルが存在するので、以下の通りに追加しております
-
after_sign_in_path_for
User(ユーザー)やStaff(「弊社管理者」)がログインした後にどの画面に遷移するかを記載
-
after_sign_out_path_for
User(ユーザー)やStaff(「弊社管理者」)がログアウトした後にどの画面に遷移するかを記載
private
# set for devise login redirector
def after_sign_in_path_for(resource)
case resource
when User
# put here for User first page direct path after signed in
# your_home_path
when Staff
else
super
end
end
def after_sign_out_path_for(resource)
case resource
when User, :user, :users
new_user_session_path
# put here for User default page direct path after signed out
when Staff, :staff, :staffs
new_staff_session_path
# put here for Staff default page direct path after signed out
else
super
end
endapp/views/devise -> app/views/users
にディレクトリを変更しております
app/views/staffs/ 直下に一式設置
このディレクトリのファイルを編集することで
Staff用の画面内容を変更できます
app/views/layouts/staffs.html.erb
「弊社管理画面」レイアウトがユーザー画面とレイアウトが違う場合は上記をご利用くださいませ。
- config/locales/devise.ja.yml
上記を編集いただくことで日本語化することができます。
合わせて、以下のファイルも日本語エラーメッセージを表示するのに必要ですので追加しております。
- config/locales/ja.yml
User モデルのログインセッションチェック及び、ログイン中にのみ、出勤・退勤のボタン押下できるようにするため MainController (app/controllers/main_controller.rb) を追加 このコントローラーを継承することでログイン中のいかなる処理も必ずログインセッションのチェックをすることが可能になる
出勤/退勤の登録
rails g scaffold attend user:belongs_to
app/views/home/index.html.erb
出勤・退勤のボタン押下のサンプル処理を追加
app/controllers/attends_controller.rb
start:出勤ボタン押下した際の登録処理
finish:退勤ボタン押下した際の登録処理
def start
...
end
def finish
...
endUse Thinreports
http://www.thinreports.org/
Gemfile
gem 'thinreports'config/application.rb
# Thinreports
config.autoload_paths += %W(#{config.root}/app/reports)app/reports ディレクトリを追加
帳票系のレイアウトファイルを保持するディレクトリ
application.rb に追加した行はこのディレクトリにパスを通す意味合い
sample
app/reports/layouts/salary.tlf
app/controllers/workers_controller.rb
# 帳票出力処理
def print
...
# (処理内容は実際のcontrollerを参照ください)
...
end- rurles:managementsテーブル、usersテーブルのリレーションを追加、整数型・日付型のカラムを修正
- users:managementsテーブル、workersテーブルのリレーションを追加
- staffs:「弊社管理」ログイン用の従業員モデル・テーブル
- attends:出席・退勤を保存するモデル・テーブル
新規作成用のdeviseのコントローラーをカスタマイズ
rails g devise:controllers users -c=registrations
app/controllers/users/registrations_controller.rb の以下のメソッドを編集
# GET /resource/sign_up
def new
# 実際のcontrollerの内容を参照ください
end
# POST /resource
def create
# 実際のcontrollerの内容を参照ください
endapp/views/users/registrations/new.html.erb に追記
<div class="field">
<%= label :management, :company %><br />
<%= text_field :management, :company %>
</div>
<div class="field">
<%= label :management, :company_short %><br />
<%= text_field :management, :company_short %>
</div>
<%# 上記と同様にしてmanagementsテーブルで必要な項目を追加していってください %>
<div class="field">
<%= label :rule, :trial_period_start_on %><br />
<%= date_field :rule, :trial_period_start_on %>
</div>
<div class="field">
<%= label :rule, :trial_period_end_on %><br />
<%= date_field :rule, :trial_period_end_on %>
</div>
<%# 上記と同様にしてrulesテーブルで必要な項目を追加していってください %>routes.rb に以下を追記
devise_for :users, controllers: {
registrations: 'users/registrations'
}app/controllers/attends_controller.rb の #printメソッドを参照くださいませ
データの取得方法を記載しております
これを元に画面を作成いただければと思います
このメソッドは給与明細印刷に利用しているメソッドです
出力しているデータは出勤・退勤ボタンを押下した際に取得したデータをそのまま表示しております
app/controllers/application_controller.rb に以下を追記
layout :layout_by_resource
...
private
...
# Layout per resource_name
def layout_by_resource
if devise_controller? && resource_name == :staff
"staffs"
else
"application"
end
endapp/views/layouts/staffs.html.erb を編集
「ログイン」→「ログイン(staff)」
<% if staff_signed_in? %>
<!-- current_user は現在ログインしているUserオブジェクトを返すdeviseのHelperメソッド -->
<!-- *_path はUserモデルを作成したときに、deviseにより自動で作成されてますので、rake routesで確認できます -->
<strong><% current_user.email %></strong>
<%= link_to "ログアウト", destroy_staff_session_path, method: :delete %>
<% else %>
<%= link_to "ログイン(staff)", new_staff_session_path%>
<% end %>-
users でアクセス
/users/sign_in
ヘッダーメニュー「ログイン」になっている
-
staffs でアクセス
/staffs/sign_in
ヘッダーメニュー「ログイン(staff)」になっている
それぞれでアクセスして確認くださいませ。
app/views/home/index.html.erb
<%- if @current_attend.present? -%>
を以下に修正
<%- if current_user.present? && current_user.attends.exists? -%>app/controllers/workers_controller.rb
end_atがnilの場合、exception発生を修正しました。
work_time: "#{I18n.l(item.start_at, format: :xs)}-#{I18n.l(item.end_at, format: :xs)}",
を以下に修正
_start_at = item.start_at.present? ? I18n.l(item.start_at, format: :xs) : nil
_end_at = item.end_at.present? ? I18n.l(item.end_at, format: :xs) : nil
...
work_time: "#{_start_at}-#{_end_at}",
...