올바른 방법을 나는이 개 그것의 서브 클래스를 만들려면 :모델 서브 클래스를 구현 - 내가 <code>Event</code> 모델이
uid :string
title :string
starts_at :datetime
ends_at :datetime
FixedEvent 이벤트와 상속 : FixedEvent
및 TasksEvent
이벤트 모델은 이러한 특성을가
all_day :boolean
TasksEvent는 Event에서 상속 받고 다음과 같은 특성을 갖습니다.
(어커런스 속성은 태스크가 말할 수있는 특별한 방법입니다.이 태스크를 두 번/세 번/x 번 수행하십시오. 발생은 작업의 발생을 나타냅니다 (예 : 사용자가 작업을 수행하는 두 번째 시간 임).
어제 하루 종일 단일 테이블 상속 및 다형성 연관성에 대한 정보를 읽었으며 아직 100 % 확실하지 않습니다. 이것을 레일스에서 구현하는 올바른 방법.
단일 테이블 상속으로 인해 uid, title, starts_at, ends_at, all_day, task_id, occurence, type이있는 하나의 테이블을 갖게되어 데이터베이스에 많은 null 값이 남습니다. 레일스가 모든 이벤트 쿼리에 대해 더 많은 (null) 데이터를 가져 오므로 서버 응답 속도가 느려 집니까?
다른 한편, Polymorphic Associations은 모델에 하위 기능을 추가하는 대신 추가 기능을 추가하는 것처럼 보입니다.
fixed_events:
id
all_day
created_at
updated_at
tasks_events:
id
task_id
occurrence
created_at
updated_at
이 동작 속도가 느린 같은 서버 응답을 만들 것
events:
id, uid, title, starts_at, ends_at,
created_at, updated_at,
event_type_id, event_type_type
(무언가가 당신의 마음에 오는 경우 유형에 대한 더 나은 이름을 제안) : 또한 그것은 dB 더 테이블 (이 경우 세)을 만듭니다 레일스는 모든 FixedEvent/TasksEvent 속성을 가져올 때마다 여러 개의 db 조인을 수행해야합니까?
또한 STI 및/또는 다형성 연관을 사용하여 새 ActiveRecord 객체를 만들 수 있습니까?
= f.fields_for :event do |event|
.field
= event.label :title
= event.text_field :title
.field
= event.label :starts_at
= event.datetime_select :starts_at
.field
= event.label :ends_at
= event.datetime_select :ends_at
.field
= event.label :description
= event.text_field :description
.field
= event.label :uid
= event.text_field :uid
내가 FixedEvent
및 TasksEvent
에서이 두 가지를 추가했다 그것은 일 : form_for에서 다음
def new
@fixed_event = FixedEvent.new
@fixed_event.build_event
respond_to :html
end
그리고 : 나는 다형성 협회 같은 것을 시도
attr_accessible :event_attributes
accepts_nested_attributes_for :event
이것을 수행하는 올바른 방법입니까, 아니면 STI가 더 좋습니까 (또는 다른 솔루션입니까?)?