2011-12-14 10 views
1

私はこの作業用のレールを持っています。イベントの発生を見つけるための自己結合関連を持つイベントモデルです。 main_eventsのタイトルと説明を何らかのオカレンスに戻すカスタムgetterがいくつかあります。イベントの発生に対して自己結合の関連付けを使用する最も良い方法

レールでこれを行うより効率的な方法はありますか?メインイベントを発生内に含める必要がありますか?

たとえば、特定のイベントが繰り返し発生すると、メインイベントの日付も表示されるはずです。

答えて

1

個人的には、私は2つのクラスを分割しました。名前と説明を含むEventモデルとdatetimeを持つOccurrenceモデルがあります。次にEvent has_many :occurrences

Eventが届いたら、DBに既に存在するかどうかを確認します。その場合は、新しいOccurrenceを作成します。それ以外の場合は、Eventと1つのOccurrenceを作成します。このような

何か(それが動作するように調整 - 私はそれをテストしていない!):

class Event < ActiveRecord::Base 
    # name:string description:text 
    has_many :occurrences 
end 

class Occurrence < ActiveRecord::Base 
    # event_id:integer date:datetime 
    belongs_to :event 
end 

def add_event(params) 
    ev = Event.find_by_name(params[:name]) 
    if !ev 
    ev = Event.create!(params) 
    end 

    Occurrence.create!(:event => ev, :date => Time.now) 
end 
関連する問題