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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1464閲覧

毎月1日にDBのテーブルに事前に決めた値を自動で登録(create)したい。

pen_gin

総合スコア1

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/06/12 03:43

前提・実現したいこと

現在、Railsで月毎に管理できる家計簿アプリを作成しています。
毎月使った金額を入力して、DBに登録しているのですが、固定費は毎月変わらないので、自動で登録したいと思っています。
毎月1日にDBの固定費テーブルに事前に決めておいた値を自動で登録(create)したいのですが、
そういった機能はできますでしょうか。
参考になる記事等だけでも教えて頂けると助かります。

該当のソースコード、DB

登録のビューは下記で、必要な項目を入力して、登録を押すとfixed_costs(固定費)テーブルにcreateするようになっています。
###アプリ
イメージ説明

###ビュー

index

1<%= form_with model: @fixed_cost, url:fixeds_path, local: true do |f| %> 2 3 <div class="fixed_category_id"> 4 カテゴリー 5 <%= f.collection_select(:fixecate_id,Fixecate.all, :id, :name, {},{class:"text"}) %> 6 </div> 7 8 <div class="fixed_id"> 9 項目 10 <%= f.collection_select(:fixecate_name_id,FixecateName.all, :id, :name, {},{class:"text"}) %> 11 </div> 12 13 <div class="price"> 14 金額 15 <%= f.text_field :price, class:"text" %>円 16 </div> 17 18 <div class="month"> 19 日付 20 <%= f.date_select :month, discard_day: true %> 21 </div> 22 23 <div class="form_child"> 24 <%= f.submit "登録" ,class:"btn" %> 25 </div> 26 27<% end %>

###コントローラー

fixedcontroller

1def index 2 @fixed_cost = FixedCost.new 3 @fixed_costs = FixedCost.where('extract(year from month) = ? AND extract(month from month) = ?', Time.now.year, Time.now.month) 4end 5 6def create 7 @fixed_cost = FixedCost.new(fixed_cost_params) 8 @fixed_cost.save 9 redirect_to root_path 10end 11 12private 13 14def fixed_cost_params 15 params.require(:fixed_cost).permit(:fixecate_id,:fixecate_name_id, :price, :month) 16end

###データベース(fixed_costsテーブル)
fixecate_idとfixecate_name_idは別のテーブルと関連付けています。
イメージ説明

###最後に
現在、プログラミングの学習を始めて4ヶ月が立ちました。
やりたい実装に対して、手も足もでなくなり、始めてteratailに質問させて頂きました。
検索の仕方が未熟なだけなのかもしれませんが、参考になる記事等だけでも教えて頂けると大変助かります。また、みなさんがどのように検索しているのかも知りたいです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

毎月1日にDBの固定費テーブルに事前に決めておいた値を自動で登録(create)したいのですが、
そういった機能はできますでしょうか。

定期的に動作させるようなものはスケジューラ―を利用しますが、それって常時システムが動作していないと駄目なんですけど、サーバーまで立てて行うアプリじゃないですよね?

固定費は毎月変わらないので、自動で登録したい

毎月分を事前登録するのではなくて、必要な時に作成したり参照したりする方が良いと思います。

投稿2021/06/12 15:14

sazi

総合スコア25300

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

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

pen_gin

2021/06/12 23:36

ご回答頂きましてありがとうございます。 サーバー立てて行うアプリです。 本番環境はAWSのunicornを用いています。 現在、rakeタスクを作成し、schedule.rbを作成しています。 うまくいっていませんが。。。 このやり方ではダメということでしょうか? 無知で申し訳ありませんが、ご教授頂けますと助かります。
sazi

2021/06/13 08:04

AWSタグが付いていましたね。 1日に自動で登録するのが駄目って事はないですけど、自動よりユーザーのアクションで登録の方が良いのでは無いかと思った次第。 自動で登録の場合、固定費の変更など、自動とユーザーアクションの双方での関係を考える必要が出てきたりしますし。
pen_gin

2021/06/13 11:10

ご指摘ありがとうございます。 説明不足でした。自分たちのみが使うアプリを想定していました。 スマホからも閲覧できるようにサーバーを立てましたが、本来であればアイフォンアプリにするのが理想でした。。。
guest

0

ベストアンサー

定期実行(タスクスケジューラ、cronなど)をすればよいです。

AWSでもできるようですね。
ルールのスケジュール式

ブラウザからのアクセスではなく、基本的にコマンド実行になるので、そこはコマンドで実行できるプログラムを準備してあげる必要があります。

投稿2021/06/12 04:05

m.ts10806

総合スコア80875

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

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

pen_gin

2021/06/12 13:53

早速ご回答頂きましてありがとうございます。 教えて頂いた内容から、Rakeタスクとgem'whenever'を使えば実装できそうだというところまで辿り着けました! 実装後、フィードバックさせて頂ければと思います。
pen_gin

2021/06/15 00:37

Rakeタスクとgem'whenever' とcapistranoを利用することで、AWSでの定期実行をすることができました。 ヒントを頂けたおかげで、諦めずに実装することができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問