मैंने acts_as_list
का उपयोग किया है क्रमबद्ध वस्तुओं को बहुत सफलतापूर्वक कार्यान्वित करने के लिए। इसके अतिरिक्त, मैं एक पृष्ठ के तत्वों को एक अलग मॉडल में सारगर्भित करूंगा, जिसे यहां PageElement
. कहा जाता है ।
मुझे लगता है कि नोएसक्यूएल डेटाबेस पर स्विच करने की कोई आवश्यकता नहीं है (हालांकि मेरे पास इस दृष्टिकोण के खिलाफ कुछ भी नहीं है)। मैं जो सोच रहा हूं उसका एक मोटा स्केच यहां दिया गया है:
class Page < ActiveRecord::Base
has_many :page_elements, :order => 'position'
has_many :todo_lists, :through => :page_elements, :source => :element, :source_type => 'TodoList'
has_many :notes, :through => :page_elements, :source => :element, :source_type => 'Note'
has_many :files, :through => :page_elements, :source => :element, :source_type => 'File'
has_many :discussions, :through => :page_elements, :source => :element, :source_type => 'Discussion'
end
class PageElement < ActiveRecord::Base
belongs_to :page
belongs_to :element, :polymorphic => true
acts_as_list :scope => :page
end
class TodoList < ActiveRecord::Base
has_one :page_element, :as => :element
has_one :page, :through => :page_elements
end
class Note < ActiveRecord::Base
has_one :page_element, :as => :element
has_one :page, :through => :page_elements
end
class File < ActiveRecord::Base
has_one :page_element, :as => :element
has_one :page, :through => :page_elements
end
class Discussion < ActiveRecord::Base
has_one :page_element, :as => :element
has_one :page, :through => :page_elements
end