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

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

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

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

Q&A

解決済

2回答

1273閲覧

Railsでモデルのデータになんらかの処理をしてからビューに渡したいです

affluenceyou

総合スコア44

Ruby on Rails

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

0グッド

0クリップ

投稿2016/01/09 10:02

閲覧ありがとうございます。

今回Ruby on Railsで、モデルから引っ張ってきたデータに、何らかの処理をしてビューに渡したいと考えております。

例えば、データの作成日から1日以上経過したら、flagをfalseにするなどです。

この場合この処理はどこに書けば良いのでしょうか?

現在
@data_origin = Data.all
1日経過したら@data_origin.flag = false
@data = @data_origin

として、ビューに@dataを渡しているのですが、これは正しい書き方なのでしょうか?
それともモデルファイルに書く処理なのでしょうか?

一応処理は上手くいってるのですが、正しい書き方を知りたいと思い質問させて頂きました。

とても素人質問ですが、お答えを貰えると助かります。

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

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

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

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

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

guest

回答2

0

どういう設計になっているのかが分からないので断定できませんが…
本来は、モデル側でデータの処理を完了してからビューに渡すのがセオリーだと思います。

投稿2016/01/09 10:26

pi-chan

総合スコア5936

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

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

affluenceyou

2016/01/09 11:12

申し訳ありません。かなり説明不足でした。 私はコントローラ内でデータを処理して、ビューに渡しました。 日時によってデータを処理したいのですが・・・ 質問なのですが、モデル内で処理を書くのと、コントローラ内で処理を書くのは、どのような基準でわけられるのでしょうか? そもそも、モデル内に書く処理がどのようなものかも分かっていないのですが・・・
guest

0

ベストアンサー

「1日以上経過している」の必要性によって違ってくると思います。
モデルの関連要素などの状態を変更させたいなど、永続的な変化をモデルに持たせ対なのであれば、バッチ処理などで定期的にモデルクラスのデータを書き換えてあげる方が良いでしょう。
しかし、「1日以上経過している」状態を見せたい、もしくはそれによって見せ方を変えるのであれば、ビュー側で処理してしまう方が良いように思います。

ソース見たところ、フラグを更新した後、保存などは行っていないので、@data.flagはビューの切り分けなどで使っているのではないかとお見受けします。
だとしたら、属性にflagなどつけずに、ビュー側で日付の比較した方が良いのでは?

投稿2016/01/11 01:19

rifuch

総合スコア1901

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

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

affluenceyou

2016/01/11 03:57

なるほど。確かにわざわざ属性を付ける必要はなかったです・・・。 保存する必要があるものだけ属性を付ければいいのですね! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問