Railsの新機能は、先月学んだばかりです。モデル関連の設定に関する質問があります。私は、私が戻って、私がすでにやったことに変更を加える必要があると思う場所にヒットします。ここにシナリオがあります。Railsアソシエーションのオプション
今後の予定をリストするためのバンドのアプリケーションを作成しています。
は、いくつかの重要な要因があります
- ユニークなイベントがありますが、また他のバンド(すなわち二つのバンド、これを使用してのいくつかといくつかのイベントを共有するイベントに
- 各バンドをリストアップし、複数のバンドがあります。システムは同じ会場で一緒に演奏されています)
- イベントのすべてのバンド(場所、日付、時刻、市、州など)に共通する特定の情報があります
- 各イベントは仕様です1つのバンド(すなわち、特定のVIPチケット購入のURL、イベントの独自の記述など)
は現在、これはその設定方法である:
class Event < ActiveRecord::Base
belongs_to :venue
scope :upcoming, where('date >= ?', Date.today)
end
class Venue < ActiveRecord::Base
has_many :events
accepts_nested_attributes_for :events
end
は、私は本当に私としてはまだ、アーティストモデルとあまり行っていません
本質的に今のところ、ユーザーはイベントフォームの作成に行き、日付と次のものを選択します行は会場名です。会場名フォームは、DBからの会場名+都市で自動完成します。ユーザーが既にシステム内の会場にイベントを作成している場合は、Venueモデルを介してイベント情報をネストされた属性として保存します。会場がシステム内にない場合、位置データの追加入力フィールドが表示され、新しい会場が作成され、そのイベントに関連付けられます。
アーティストがイベントを共有し、そのアーティストだけに固有のイベントについて特定の詳細を維持するための最良の方法について考え始めると少し難解になります。私はすべてのイベントを個別のイベントとして扱うことはできますが、それは簡単ですが、この芸術家がこれらの名前を1つのフィールドに直接入力する以外にどのようにこのアーティストが演奏していると言えるでしょうか。私はまた、どのアーティストが他のアーティストとどこで演奏したかなど、ActiveRecordsの魔法をたくさん失う。
今のところイベント用のモデルは1つしかないが、都市、州などの複数のバンドで共有されていないイベントの基本情報のみを1つの中央モデルに保存し、それらをバンド固有の情報のセカンダリevent_detailsモデルにリンクします。
複数のアーティストが共有する1つのメインイベントにリンクするイベント詳細モデルを作成するよりも、複数のモデルを提案したり、複数のイベントを一緒に再生するバンドをリンクする方がいいですか?イベントテーブルに一意のイベント識別子を作成して、別のバンドが再生している同じイベントと異なるIDでイベントを処理する必要がありますか?唯一の問題は、それが私のデータベースにある多くのデータを倍増させることになるということです。私は、イベントデータを見て、アーティストが演奏しているこの日このショーでは、この会場で、他のバンドと一緒に、バンドが単に演奏しているアーティストをリストする「other_artists」コラムを作るだけで簡単にできます。
申し訳ありませんが、私はそれが理にかなっていることを願っています...アドバイスを事前に感謝!
はい、あなたは正しいと思います。助けてくれてありがとう。 – brent
予約モデルをどのように更新しますか? Venueからネストされた属性を受け入れ、通常のイベントモデルを更新するのと同じ方法で更新しますか? – brent
私はイベントを通じて予約を管理します。イベントコントローラーには、関連付けられたビューとともに「new_booking」アクションと「update_booking」アクションがあります。 Event#showビューでは、new_bookingアクションへの「新しい予約」リンクを提供することができます。 new_bookingアクションでは、イベント予約の関係を「@booking = @ event.booking.new」に設定します。関連するビューでは、ユーザーがアーティストを選択し、特別な要件/手配を入力することができます。イベントは、予約のネストされた属性を受け入れる必要があります。 –