Я хотел бы создать функцию временной шкалы для существующей модели карты. На Карте уже есть примечания к заметкам и has_many. Я хотел бы быть в состоянии:Rails полиморфная ассоциация, представляющая существующие модели has_many
- доступа заметка, приложение (и другие модели в конечном счете) в единой коллекции с хорошим методом, как: card.timeline
- все еще быть в состоянии получить доступ к кардочесальному заметки и вложения, такие как: card.notes
- все еще быть в состоянии получить доступ к материнской карты записку как: note.card
- иметь возможность добавлять элементы на временную шкалу карты, с API, как: карты. временная шкала < < примечание
Я думаю, что у меня есть DB настроен правильно, это заявление ассоциации я не могу показаться, чтобы получить право. Вот моя схема:
create_table "cards", :force => true do |t|
t.string "name"
end
create_table "timeline_items", :force => true do |t|
t.integer "card_id", :null => false # FK from cards table
t.integer "item_id", :null => false # FK from notes or attachments table
t.string "item_type", :null => false # either 'Note' or 'Attachment'
end
create_table "notes", :force => true do |t|
t.text "content"
end
create_table "attachments", :force => true do |t|
t.string "file_file_name"
end
Кто-нибудь знает, как я могу достичь этого, используя ActiveRecord? Это подталкивает меня к мысли!
Отправной точкой является:
class Card < ActiveRecord::Base
has_many :timeline_items
has_many :notes, :through => :timeline_items, :source => :item, :source_type => 'Note', :order => 'updated_at DESC'
has_many :attachments, :through => :timeline_items, :source => :item, :source_type => 'Attachment', :order => 'updated_at DESC'
end
class TimelineItem < ActiveRecord::Base
belongs_to :card
belongs_to :item, :polymorphic => true
end
class Note < ActiveRecord::Base
has_one :card, :through => :timeline_items
has_one :timeline_item, :as => :item
end
Заранее спасибо ~ Stu
Я думаю, что я ответил на здесь :) Спасибо за размещение решение 90% моих собственных вопросов. –
Нет проблем - если я что-то пропустил, дайте мне знать – Stu