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

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

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

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

0回答

550閲覧

既存modelを改変せずに取得結果を編集したい

ambiguous

総合スコア33

Ruby

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

1クリップ

投稿2021/05/28 00:18

既にあるアプリケーションに対し、既存のソースに手を加えること無く、modelで取得した結果をviewに返すまでに編集することは可能でしょうか?

例えば、既存の機能ではあるページに表示する<select>要素配下の<option>要素を増減させたいのです。当初はJavaScriptでの実現を考えて着手していましたが、他の項目で動作するJavaScriptの条件次第では矛盾が生じることが判明したため、解決方法で悩んでいます。そこでControllerで言うところのafter_actionみたいな方法でviewに返すまでに編集の機会を得られないかと思いました。

rubyやrailsに不慣れなもので頓珍漢なことを言っているかもしれませんが、何か情報をお持ちの方がおられましたら教示いただきたく存じます。

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

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

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

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

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

winterboum

2021/05/28 02:04

「既存modelを改変せずに」やることは可能ですが「既存のソースに手を加えること無く」やることは不可能です。 model、controller、helper、view、asset のどれなら触ってよいのですか?
ambiguous

2021/05/28 05:07

お返事ありがとうございます。 moduleを作成しモンキーパッチで「外部から変更を加える」のであれば、基本的にどのオブジェクトでもかまいません。但し、view上で色々とJavaScriptで動いているので基本的にviewとasset以外を考えています。 ただ、そうではなく人間の手による改変となると、既存のソースに手を入れることは不可能です。 新たなクラス、モジュール等を追加するだけであれば問題ありません。
winterboum

2021/05/28 06:29

「外部から変更を加える」というのはどういう意味ですか? モンキーパッチであるか否かによらずmoduleを適用するということは もとのclassに includeなりextendなり書き込まないとだめですから、手を入れることになります
asm

2021/05/28 07:31

矛盾したjavascriptとやらとすり合わせるべきだと思いますが・・・ 「modelで取得した結果」ってのはwhere等の検索結果なのか、それともカラム(属性)なのか 前者の場合はdefault_scopeっぽい気がするが クラス外(というかapp/models/以外)からdefault_scope掛けられるとか悪夢に近い
ambiguous

2021/05/30 23:01 編集

# winterboumさん 失礼しました。申し遅れましたが、今回手を入れようとしているのはRedmineというITSになります。プラグインによる開発をしておりますが、Redmine本体に手を入れられない事情がありプラグイン側で機能を実装したいと考えています。 RubyもRailsもあまり馴染みが無いため、記載しましたモンキーパッチが本来のモンキーパッチと呼ばれる物なのか、それともプラグインI/Fを介したRedmine独自の物なのか理解できておりません。 ただ参考にしたネット上の情報ではcontrollerに手を入れず、after actionを追加することができたため、似たようなことがmodelでもできるのではないかと思った次第です。そもそもプラグインによる機能拡張を前提としたプロダクトであるため、「classに includeなりextendなり書き込まず」に済んでいるのかもしれません。
ambiguous

2021/05/30 13:45 編集

# asmさん イメージとしては前者に違いです。 winterboumさんへのレスでも記載しましたが、今回Redmineと言うプロダクト上で本体に手を入れずに実現する必要があり当初はJavaScriptベースで作り始めたものの、JavaScriptだけだとかなり複雑になりそうなので、model側とJavaScript側とで役割を分けられないかと考えた次第です。
winterboum

2021/05/30 16:49

となると、質問のタイトルとタグを変えたほうがよいですね。 Redmineのプラグインの仕組みを知らないので。 after_actionをつくった経験があるのでしたら、該当するactionにafter_actionにて取り込んだ結果を処理し直してしまうという方法で行けるのではないのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問