Just for completness ...
In fact I have to refer to the belongings table when interested by the
acts_as_list behavior. So:
c.belongings.first.move_to_bottom
And not:
c.elements.first.move_to_bottom
etc. etc.
And in my case the scope I meant wasn''t:
element_id=#{element_id} and element_type=#{quote_value
element_type}''
But:
collector_id
Since I want the elements inside a collection to act as a list.
On 14 nov, 13:46, peportier
<pierre-edouard.port...-TYLpsfhSBw3HNWWW6QW1Ag@public.gmane.org>
wrote:> First, BRAVO for this wonderful plugin: has_many_polymorphs ! Now my
> problem:
>
> 4 models : Collection, Page, Fragment, Belonging (which is the join
> table):
>
> 1 class Collection <
> ActiveRecord::Base
> 2 has_many_polymorphs :elements,
> 3 :through => :belongings,
> 4 :from => [:pages, :fragments, :collections],
> 5 :as => :collector,
> 6 :parent_order => ''belongings.position''
> 7 end
>
> 1 class Page <
> ActiveRecord::Base
> 2 has_many :fragments
> 3 end
>
> 1 class Fragment <
> ActiveRecord::Base
> 2 belongs_to :page
> 3 end
>
> 1 class Belonging <
> ActiveRecord::Base
> 2 belongs_to :collector,
> 3 :class_name => "Collection",
> 4 :foreign_key => "collector_id"
> 5 belongs_to :element, :polymorphic => true
> 6 acts_as_list :scope => ''element_id=#{element_id} and
> element_type=#{quote_value element_type}''
> 7 end
>
> The belongings database table structure:
>
> collector_id (integer) ; element_id (integer) ; element_type
> (string) ; position (integer)
>
> The self referential polymorphic aspect works like a charm!
> But the acts_as_list doesn''t!
> Here a demonstration inside the console:
>
> >> c = Collection.create(:name => "C1")
> >> c.elements << Page.create(:name => "P1")
> >> c.elements << Page.create(:name => "P2")
> >> y c
>
> --- &id006 !ruby/object:Collection
> attributes:
> name: C1
> updated_at: &id001 2007-11-14 13:17:45.877143 +01:00
> id: 1
> created_at: *id001
> belongings:
> - !ruby/object:Belonging
> attributes:
> updated_at: 2007-11-14 13:18:39
> element_id: "1"
> id: "1"
> collector_id: "1"
> element_type: Page
> position: "1"
> created_at: 2007-11-14 13:18:39
> - !ruby/object:Belonging
> attributes:
> updated_at: 2007-11-14 13:19:06
> element_id: "2"
> id: "2"
> collector_id: "1"
> element_type: Page
> position: "1"
> created_at: 2007-11-14 13:19:06
> elements:
> - &id003 !ruby/object:Page
> attributes:
> name: P1
> updated_at: &id002 2007-11-14 13:18:39.397292 +01:00
> id: 1
> created_at: *id002
> errors: !ruby/object:ActiveRecord::Errors
> base: *id003
> errors: {}
>
> new_record: false
> new_record_before_save: true
> - &id005 !ruby/object:Page
> attributes:
> name: P2
> updated_at: &id004 2007-11-14 13:19:06.052972 +01:00
> id: 2
> created_at: *id004
> errors: !ruby/object:ActiveRecord::Errors
> base: *id005
> errors: {}
>
> new_record: false
> new_record_before_save: true
> errors: !ruby/object:ActiveRecord::Errors
> base: *id006
> errors: {}
>
> new_record: false
> new_record_before_save: true
> => nil>> c.elements.first.move_to_bottom
>
> NoMethodError: undefined method `move_to_bottom'' for
#<Page:0x3318ba4>
> from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/
> active_record/base.rb:1860:in `method_missing''
> from (irb):8
> from :0
>
> I would be very pleased if you could help me ...
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---