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

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

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

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

Q&A

解決済

2回答

10644閲覧

railsでの共通処理やロジックの記述場所

sprite

総合スコア63

Ruby on Rails

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

0グッド

1クリップ

投稿2016/01/15 05:57

お世話になります。

railsでの共通処理やロジックの記述場所を教えて下さい

例)
def 日付に2月加えて返す共通関数
end

def ひとつのコントローラで使う複雑な計算を行う関数
end

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

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

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

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

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

guest

回答2

0

ベストアンサー

Concernに書くのが最近のお作法のようです。
http://qiita.com/kasei-san/items/c016c626836da09a5a70
http://blog.yujigraffiti.com/2015/01/rails-42module-classmethodsconcernclass.html

app/models/concerns/date_calc.rb

ruby

1module DateCalc 2 extend ActiveSupport::Concern 3 4 included do 5 logger.info("DateCalc included!") 6 end 7 8 class_methods do 9 def yay 10 p "yay!!" 11 end 12 end 13 14 def increment_2m(d) 15 d.months_since(2) 16 end 17end

app/models/test.rb

ruby

1require "date_calc" 2class Test < ActiveRecord::Base 3 include DateCalc 4 def two_month 5 return increment_2m(Time.now) 6 end 7end

app/controllers/concerns/keisan_module.rb

ruby

1module Keisan 2 extend ActiveSupport::Concern 3 4 included do 5 logger.info("Keisan module included!") 6 end 7 8 def fukuzatsu 9 return "fukuzatsu dayo!" 10 end 11end

app/controllers/test_controller.rb

ruby

1require 'keisan_module' 2 3class TestController < ApplicationController 4 include Keisan 5 6 def index 7 render text: fukuzatsu 8 end 9 10end

投稿2016/01/15 14:39

jinco

総合スコア432

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

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

sprite

2016/01/19 05:49

ありがとうございました。 もう一つ教えていただきたいのですが、 app/controllers/concerns/keisan_module.rb から model.test.rbの呼び出し方を教えて下さい。
guest

0

良い回答か分かりませんが、私の場合は以下の場所に設定するかなーと。

app/modelsの該当ファイルに設定。
def 日付に2月加えて返す共通関数
end

こちらはapp/controllersの該当ファイルに設定。
def ひとつのコントローラで使う複雑な計算を行う関数
end

投稿2016/01/15 12:15

Mkato

総合スコア118

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

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

sprite

2016/01/19 05:49

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問