0

ユーザー、ロール、およびイベントを含む 3 つのモデルがあるとします。各ユーザーは多くの役割 (例: ギタリスト、ベーシストなど) を持つことができ、各役割にはそれを実行できる 1 人以上のユーザー (例: Ted はギタリストまたはベーシストとして行動できます) を持つことができます。

私は教会のバンドの勤務表アプリケーションを作成しています。つまり、すべてのイベントにはバンド内で 1 つの役割があり、イベントごとに各役割を果たす 1 人のユーザーがいるということです。モデルでこの関係を強制する方法があるのか​​ 、それともアプリケーションの別の場所でこれを行う必要があるのか​​ どうか疑問に思っていました. 事前に助けてくれてありがとう!

4

2 に答える 2

0

イベントは EventParticipation を通じて多くのユーザーを持つ必要があり、EventParticipation は必要です

belongs_to :user
belongs_to :event

必要に応じて、user_id の一意性検証を行い、role_id を追加して、範囲指定された一意性検証を行います。

于 2012-06-30T19:41:30.883 に答える
0

モデルのカスタム検証メソッドでこれを行います。これはテストされていないコードですが、次のようなものです

class ChurchEvent < ActiveRecord::Base
  validate :has_one_role_each

  def has_one_role_each
    errors.add(:base, "only one of each role allowed") if duplicate_roles?
  end

  private

  def duplicate_roles?
    # assuming band_roles is array of roles for this event
    band_roles.uniq.count != band_roles.count
  end
end

そして、ユーザーにとっても同様のことです。

于 2012-07-01T00:59:33.263 に答える