1

ユーザーモデルと組織モデルがあります。唯一の違いは、組織には多くのユーザーがいて、他のすべてのプロパティは同じであることです。1つのテーブル/モデルに入れたくありません。このモデルで重複している大量のコードを削除するにはどうすればよいですか? 懸念事項を使用する必要がありますか? User モデルが次のようになると、正常ではないと思います。

class User < ActiveRecord::Base  
  include user_concern
end

では、ユーザー モデルを他のモデルに拡張するにはどうすればよいでしょうか。rails gそして、内部にすべてのユーザーのフィールドを使用してこのモデルを生成する方法は?

4

2 に答える 2

2

性感染症に注意してください

STIを使用するよりも、懸念を持ち続けます。STI は、多くの場合、それが解決する問題 (型の不一致、フォームの URL など) を引き起こします。さらに、継承は意味がありません。ここでは、ユーザーは一種の会社ではなく、会社は一種のユーザーではありません。

ネーミングの問題ですね

あなたの問題は命名の問題だと思います。明らかに、あなたの懸念は「UserConcern」であってはなりません。問題は、どのような方法をその懸念に分類するかということです。

ユーザー間の社会的関係についてのあなたの方法はありますか?次に、Socializable懸念が必要です。彼らはメーリングリストへの登録についてですか?Subscribable次に、懸念が必要です。

開発者は「これは一体何をするのだろう?」と不思議に思わないからです。すべての懸案事項に適切な名前が付けられている場合。

とにかく複製するもの

また、おそらくクラス レベルのメソッドが懸念事項を呼び出せるようにする必要があります。

スコープがコンサーンに埋め込まれても構わない場合 (結局のところ、スコープはメソッド定義で解決されます)、そこにリレーションを配置するのはあまり自然ではないように感じます。

複製する#has_many :foosことは問題ありません。私たちは常に別々のモデルでそれを行っています。さらに多くの情報を隠すことなく、モデルからテーブル スキーマのアイデアを得ることはすでに十分に困難です。

于 2013-10-30T09:29:41.237 に答える