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

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

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

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Ruby on Rails

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

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

Q&A

解決済

1回答

3574閲覧

ruby on rails viewへの値の渡し方と、ビジネスロジックの書き方について

hiepita1

総合スコア37

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Ruby on Rails

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

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

0グッド

0クリップ

投稿2017/03/22 07:09

お世話になっております。
また基本的な質問になってしまいますが、どうぞよろしくお願いいたします。

現在業務でRuby on Railsの勉強をしていて、modelの処理をviewにどのように渡すべきなのかで悩んでいます。

元々Asp.net Mvc C#していた経緯があるので、Asp.net Mvcのコードと合わせて質問させて頂きます。
Asp.net Mvcでは、ビジネスロジッククラスをmodelとは切り離して使用していました。具体的なコードは以下の通りです。

Asp.net Mvc
controllerclass
{
public model Action
{
business instance = new business();
model returndata = instance.GetReturnDataMethod(params)
return View(returndata)
}
}

businessclass
{
public model GetReturnDataMethod(params)
{
model returndata = //paramsを元にデータベースにアクセス等をして、リターンデータを作成
return returndata
}
}

一方Railsでは、model内にビジネスロジックを書くということになっているようですが、どのように、どこに記述するのが一般的なのでしょうか?(model内にクラスメソッド?helper?その他?)
また、Asp.New MvcでいうReturn View はどのように書くのが正しいのでしょうか?

現在はmodelクラスの中にメソッドを作成して、その中でインスタンス変数に格納しているのですが、model内でmodel自身のビジネスロジックを書くことに違和感があります。

Ruby on Rails
controller
def action
@displaymodel = model.new
@displaymodel.getmodeldata(params)
end
end

model
def getmodeldata(params)
@titlemodel = //paramsを利用してデータベースにアクセス等をしてリターンデータを作成
@listmodel = //paramsを利用してデータベースにアクセス等をしてリターンデータを作成
end

view
<%= @displaymodel.title%>

<%= @displaymodel.listmodel.each do |data|%>

<%= end %>

まだまだプログラミング経験が未熟ですので、変な質問をしているかもしれませんが、ぜひご教示頂ければと思います。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

本来のMVCのMとRailsのモデルはイコールではありません。
ASPでやっていたように、ビジネスロジックは通常のRubyクラスで記述。
データベースのアクセスだけ、ActiveRecordを継承したモデルクラスに担当させる、という方法もよく使われます。

しかし、チュートリアルとか初心者向けの内容でこれを説明してしまうとレベルに合わないため理解できないでしょうからActiveRecordを継承したモデルクラスに処理を書くような例が多いです。
また、小規模なアプリケーションではこれで十分な事が多いのも事実です。

参考になりそうな記事を紹介しますので、こちらもご参照ください。

俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita
サービスクラスについては僕も悪かったと思っているけど、それでもCQSは実現したいんだ - Qiita

投稿2017/03/23 03:22

mingos

総合スコア4025

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問