問題タブ [service-object]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails - アクティブ レコードではないモデルを配置する場所 (ディレクトリ)
データベース コンポーネントではないモデルを持つアプリを構築しています。Rails コミュニティでこの問題に取り組むために他の人が何をしているか知りたいです。
それらをどこに置くか、私たちは苦労しています。
私たちは持っているべきです:
また
多分
多分
これの一部は、Rails の標準にどれだけ近づけるか、必要なものに適した構造をどれだけ作成するかに苦労していることです。
オブジェクトをサービス オブジェクトと考えると、
と
ダウンする別のルートは、アプリ内に物がありません。
それ以外の
おそらく、Rails アプリ経由でアクセスしたい場合は、構成よりも規則を利用するために app/ を使用する方が適切です。
ruby-on-rails - テスト用に無効なモデルを返す
サービス オブジェクト ( http://railscasts.com/episodes/398-service-objects ) を作成しました。これは、基本的に A と B の 2 つのモデルを作成し、B が A に属している場合にそれらの間の関連付けを設定し、A を返します (これは次に、アソシエーションが与えられた場合、A を介して B にアクセスできます)。
エラーが発生した場合は、エラー情報を含むハッシュを返します。このメソッドをテストしようとしているときに、モデル (成功した場合) またはエラー情報を含むハッシュの 2 種類の戻り値が考えられるという問題が発生しています。
これは設計が間違っていることを示していますか? 最初にテスト (TDD) すると、そのような設計上の問題を回避できることがわかっています。
それが問題であれば、無効な A モデルを返す必要があることはわかっています。モデル B が作成時にエラーをスローすると仮定すると、どうすれば無効な A モデルを返すことができるでしょうか?
エラー ハッシュを返すことが問題ない場合、このメソッドをテストしやすいように設計するにはどうすればよいでしょうか?
ruby - Ruby の .() 演算子はどのように機能しますか?
私は最近、それがどのように機能するかについての十分な説明を見ずに、フォーマットで構成されるメソッド呼び出しを使用するコードに出くわしました。object.(arg1, arg2)
このサンプル コードを参照してください。
この種の略記の用語は何ですか?
ruby-on-rails - Rails 名前空間サービス オブジェクト
「出席をマークする」ためにコントローラーとモデルの間にサービス オブジェクトを作成したので、次のようにコントローラー アクション用のオブジェクトが 1 つあります。
サービス オブジェクト (現在の実装):
理想的には、コントローラ クラス内でサービス オブジェクトの名前空間を指定したいと考えていますが、Rails では、コントローラにネストされたサービス クラスではなく、そのファイルがサービス クラスを定義することを期待しています。
モジュールの名前は利用可能ですが、これに規則があるかどうかはわかりません。全体として、最も気になるのは、コントローラー内でそのクラスを定義したいが、別のファイルで(おそらくそのネストを使用して)定義したいということです。モジュールをコントローラーに含めることもできますが、それは私のポイントではありません。レールでサービス オブジェクトの名前空間を設定するためのベスト プラクティスはありますか?
ruby-on-rails - Rails でのサービス オブジェクトとアプリケーション間の相互作用
多くのサービス オブジェクトを持つアプリケーションに取り組んでいます。通常、これらのサービスの仕事は、1 つ以上の Active Record モデルを構築することです。サービスがアプリケーションに結び付けられるのを避けるために、ユーザーがモデルの名前を変更できるようにしています。次に例を示します。
かなりうまく機能すると思いましたが、このソリューションには柔軟性が欠けている場合があることがわかりました。たとえば、属性の 1 つを使用してモデルを検索する必要があるサービスがあります。それが私がそれを実装したかった方法です:
それが最も適切な解決策であるかどうかはわかりません。一部の記事では、一種の「アダプター」である別のサービス オブジェクトを使用していますが、このような単純なユース ケースではやり過ぎのようです。
何か提案はありますか?現在のアプローチを続けますか?