0

オンラインで答えを見つけようとして数日を費やした後、私は助けを求める必要があると考えました. Rails Associations を使用してこれらの関係を実装する最善の方法を見つけようとしています。

UserTransferBuildingおよびの4 つのモデルがありBagます。

AUserにはrole属性があります。の可能な値role'admin''building_contact'および'guest'です。

これは、ツリー構造でどのように見えるかです。AdminGuestはのBuildingContact役割です@user:

           管理者
             | |
         移行
        / \
     ゲストビル
       | | | |
      バッグビルディングお問い合わせ

したがって:

Admin has_many :transfers
Transfer belongs_to :admin

Transfer has_many :guests
Guest belongs_to :transfer
Guest has_many :bags

Transfer belongs_to :building
Building has_many :transfers
Building has_many :building_contacts

Userモデルとの関係を実装する最良の方法は何ですか?

前もって感謝します!

4

1 に答える 1

2

私がしたい基本的な質問の1つは次のとおりです。

ユーザーは複数の役割を持ちますか? あなたは単一のロール属性を持っているので、そうではないと思います。彼らは多くのことを共有しているかもしれませんが、さまざまなユーザー タイプのビジネス ロジックによってさまざまなモデルが作成されると思います。その role 属性を捨てて、代わりに type 属性を使用し、STI を使用するのはどうですか?

class Admin < User; end
class Guest < User; end
class BuildingContact < User; end

そうすれば、継承されたユーザー機能を使用できますが、必要に応じて異なるビジネス ロジックを定義できます。これをさまざまなコントローラーとビューに拡張できます。そうしないと、希望よりもはるかに大きな User クラスを持つリスクがあると思います。

于 2012-09-13T21:27:04.220 に答える