1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Code details :

#model file
class RelatedItem < ActiveRecord::Base
acts_as_list :scope => :relater
belongs_to :relater, :polymorphic=>true
end

class RelatedLink < RelatedItem

end

class RelatedFeed < RelatedItem

end

class Clip < ActiveRecord::Base
has_many :related_items, :as => :relater
end

Table Structure of RelatedItem

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
id             :integer(11) 
name           :string(255)     
relater_id     :integer(10)     
relater_type   :string(255)     
type           :string(255)     
position       :integer(10)     
source         :string(255)     

#########




In the above case while creating new record for RelatedLink or RelatedFeed it generating position number with scope of RelatedLink or RelatedFeed..
like 

@clip = Clip.find(10)

when creating records in RelatedLink
(i,e 
@related_item = RelatedLink.new(:relater_id=>@clip.id, :relater_type=>'#{@clip.class.name}')
}

output showing like
rec 1 -> position=1 ,relater_id=10, relater_type="Clip", type="RelatedLink"
rec 2 -> position=2 ,relater_id=10, relater_type="Clip", type="RelatedLink"
rec 3 -> position=3 ,relater_id=10, relater_type="Clip", type="RelatedLink"

AND when creating records in RelatedFeed
(i,e 
@related_item = RelatedFeed.new(:relater_id=>@clip.id, :relater_type=>'#{@clip.class.name}') 
)

with RelatedFeed output:
records 1  -> position=1 ,relater_id=10, relater_type="Clip", type="RelatedFeed"
records 2  -> position=2 ,relater_id=10, relater_type="Clip", type="RelatedFeed"
records 3  -> position=3 ,relater_id=10, relater_type="Clip", type="RelatedFeed"