1

ユーザーが3つの異なるプロファイル/ロールにサインアップできるレールに求人検索アプリケーションを実装しています。

  1. 雇用者
  2. ワーカー
  3. 起業家(自分の会社を持っている)

ユーザーは複数のプロファイル/役割を選択できます。

(私はデバイスを使用しています)

私の質問は、上記のケースで単一テーブルの継承を実装することは可能ですか?

  CLass Employer < user
  CLass worker < user

または、上記の機能を実装するためのデータベース構造の最適なソリューションは何ですか?

4

2 に答える 2

0

このrailscastを見たいと思うかもしれません- これは私が最近実装したものです。データベースでビットマスク列を使用します。また、許可を処理するためにcancanとペアにしました。

于 2012-08-24T20:57:42.113 に答える
0

はい、確かに可能です。STI は、モデルが同じ属性を共有し、それらをまとめてクエリできるようにする場合に広く使用されます (1 つの db テーブルをロードするため、速度と単純さが向上します)。クラス間でコードを共有することもできます。メソッドを親クラスに 1 回配置するだけで、すべての子が継承されます。

補足として、ルビの命名規則に従っていることを確認し、クラスを大文字にしてください

  Class Worker < User

EDIT(推奨されるアプローチ)

これらのロールをユーザーから継承することはありません。引き続き STI を使用できますが、別のモデルを作成できます。

   Class User < ActiveRecord::Base
      has_many :profiles
   Class Profile < ActiveRecord::Base
      belongs_to :user
   Class Employer < Profile
   Class Worker < Profile
   Class Entrepreneur < Profile
于 2012-08-24T16:18:26.100 に答える