質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

4879閲覧

railsで、ボタンを押した時に時刻を保存したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2017/05/22 04:36

いつもお世話になっております。
当方Rails初心者です。

現在、出勤打刻システムを作ってみています。
あるページで出勤ボタンを押すと、年、月、日、時間、分、がそれぞれ別のカラムで保存されるようにしたいのですが、どのように作るべきでしょうか?

inputでhidden属性を指定して送信すればいいかなと思ったのですが、
時刻はどこで取得してどう送ればいいのだろう?と困ってしまいました。

Railsでバージョンは5.0.0.1を使っています。
なにかアドバイスを頂ければと思います、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

私だったら、システムにログインした時間を出勤時間にしちゃいますけどね。
まあ、おそらく後から調整するのでしょう。

あるページで出勤ボタンを押すと、年、月、日、時間、分、がそれぞれ別のカラムで保存されるようにしたいのですが、どのように作るべきでしょうか?

同じカラムではダメなのでしょうか?
通常、DBにDateTimeというデータがあってRuby on Railsでは日付が、かなり直感的に操作できます。
@time=Time.current
@time.ago(2.years)
@time.since(2.years)
@time.next_week(:monday)
@time.end_of_month
さらにgem 'era_ja'を使えばあっという間に和暦に変更可能。
それぞれ別のカラムで保持する理由なんてありません。

そして、formに日付を入力するより、
controllerで
@login=LoginLogout.new(logindate: Time.current)
と取得して
formで

ruby

1<%= form_for(@login) do |f| %> 2<%= f.datetime_select :logindate %> 3<% end %>

とすれば、年、月、日、時間、分が別のセレクトボックスで登録できます。
もちろん、カラムは一つです。

どうしても、年、月、日、時間、分、をそれぞれ別のカラムで保存したかったら理由を教えてください。
あと、controller model viewは質問時に一緒に晒していただくと、円滑に回答ができます。

投稿2017/05/22 04:51

編集2017/05/22 05:20
moke

総合スコア2241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/22 06:16 編集

ご丁寧なご回答をいただきありがとうございます! 普段バイトなどで働いた時間を算出して給料計算をしたいなと思ってこのアプリを作っているのですが、 バイトって普通15分単位で時給がつくのと、あとで編集しやすいかなと思って別のカラムで保存しようと思っていました(むしろ効率悪いでしょうか?)
moke

2017/05/22 06:47 編集

本業はプログラマではないので語らしてもらいますが 労働法の観点では、15分ごとに切り捨ては基本的に違法です。切り上げなら可 分単位で月ごとにで合算して30分を基準に切り上げ切り捨てすることは認められています。 とはいえ、15分ごとに切り捨ては普通に行われている慣習(グレー寄りの黒)なので、これができないソフトは売れないかもしれません。 つまり、実時間を記録して、方式によって、労働時間を集計するのがセオリーです。 仕様を言われたままに作るより、法律に関して言及できるPGはかっこいいですよ。
退会済みユーザー

退会済みユーザー

2017/05/22 07:22

それは初めて知りました!ありがとうございます。 ちなみに私のバイト先は30分ごとにつくのですがこれも違法なのでしょうか? 例えばシフトが9:00〜18:00だった場合、8:59までに打刻しないと30分間給料がつきませんし、退勤も18:00にならないとそれまでの30分間の給料がつかない、といったルールなのですが… また、実時間というとやはり1分単位で給料計算することになりますが、 その場合は設定されている時給を60で割った分×実働時間、と計算することになりますよね?
moke

2017/05/22 08:15

まあ、普通のブラックですね。 タイムカードのコピーを残していますか? コピーがあれば割と簡単に2年分(時効)取り戻せる可能性があります。 不良弁護士集団(アデーなんとか)が相談に乗ってくれるかもしれません まあ、経営者側の気持ちもあるので、自分がもらえるだけの 働きをしていたかよく考えてみてください、それが元で経営が傾くってことは さすがにないかもしれませんが、会社が潰れると経営者以外も路頭に迷い兼ねませんからねぇ 脱線しましたが 実時間でデータを保存して 端数の処理を集計時に計算して集計するという意味です。 60で割った分×実働時間となるとは限りませんが、そのような計算方法が採用される可能性も あるでしょう、そういうときは、時間の差が小数で表されるのでそれにかけるだけです。
退会済みユーザー

退会済みユーザー

2017/05/29 06:39

お返事が遅くなってしまい申し訳ありません。 そうなんですね… むしろ今まで1分単位でつくところで働いたことがないので、当たり前だと思っていました。 毎回ランチを奢ってくれたりしてくれるので、そこは大目に見ようと思います笑。 教えていただき、ありがとうございます。 なるほど、端数の処理も考えなくてはいけませんね。 いただいたアドバイスを参考に、自分で頑張ってみようかと思います! また相談させていただくかもしれません、そのときはよろしくお願いいたします。 ご丁寧なご回答をいただき、ありがとうございました。
moke

2017/05/29 09:08 編集

大目に見てくださいw でも、例えば、交通費の支給などは、法律的な義務は一切なく会社側の善意です。 少し仕事の話をする代わりに、昼奢ってくれてくれるのも義務ではありません。 (経費性が認められるので、控除の対象ににはなるのですが) 法律に関しては、多少なあなあだけど、しっかり社員に還元しようとするのは日本の いいところです。 それに、法律を遵守してそれ以外をバッサリ切られるとおそらく手取りが減りますw そう言うのが好きな方は、新自由主義の権化アメリカ、中国、韓国あたりに行くと幸せになれます。 実装に関してはかなり直感ん的にできるので工夫して見てください。 ただ、Railsではなくactive_recordsのselectを使って直接SQLを 書いた方がスピードの面でいい場合もあります。合わせて検討ください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問