# Can I use acts\_as\_list with a has\_many :through association

**URL:** <https://www.ruby-forum.com/t/can-i-use-acts-as-list-with-a-has-many-through-association/104762>\
**Category:** Rails\
**Created:** [May 22, 2007, 8:38am UTC](https://www.ruby-forum.com/t/can-i-use-acts-as-list-with-a-has-many-through-association/104762 "2007-05-22T08:38:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![stepheneb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71e660/32.png) [@stepheneb](https://www.ruby-forum.com/u/stepheneb)\
**Post date:** [May 22, 2007, 8:38am UTC](https://www.ruby-forum.com/t/can-i-use-acts-as-list-with-a-has-many-through-association/104762/1 "2007-05-22T08:38:05Z")

</div>

I’d like to be able to use a has\_many :through association and treat  
the associations as a list but I’m getting this error when I try an  
use an acts\_as\_list method:

NoMethodError: undefined method `move\_to\_bottom’

I’m using edge rails r6786.

Here are my domain rules:

Activities are things students can do.  
Units consists of a sequenced list of Activities.  
Activities can be used in many Units.

Here are the associations for these rules:

class Activity \< ActiveRecord::Base  
has\_many :unit\_activities  
has\_many :units, :through =\> :unit\_activities  
end

class Unit \< ActiveRecord::Base  
has\_many :unit\_activities, :order =\> :position  
has\_many :activities, :through =\> :unit\_activities  
end

class UnitActivity \< ActiveRecord::Base  
belongs\_to :activity  
belongs\_to :unit  
acts\_as\_list :scope =\> :unit\_id  
end

In he example below in script/console I load in some previously  
created activities; make a new unit; and add the activities to the  
unit.

> > activity\_crystals = Activity.find\_by\_name(“Molecular crystals”)  
> > activity\_browning = Activity.find\_by\_name(“Brownian motion”)  
> > activity\_mixing = Activity.find\_by\_name(“Temperature of mixing  
> > water - TEEMSS demo”)  
> > my\_unit = Unit.create(:name =\> “My First Unit”, :description =\> “A  
> > simple test unit to see if thenew associations work”)

> > my\_unit.activities.push(activity\_crystals, activity\_browning,  
> > activity\_mixing)

> > my\_unit.activities.each { |a| puts “#{a.id}: #{a.name}” }; nil  
> > 55: Molecular crystals  
> > 42: Brownian motion  
> > 25: Temperature of mixing water - TEEMSS demo

Here’s where the error occurs:

> > my\_unit.activities[0].move\_to\_bottom  
> > NoMethodError: undefined method `move\_to\_bottom’ for  
> > #Activity:0x34dec54  
> > from

At this point my unit\_activities table looks like this:

## id activity\_id unit\_id position

1 55 1 1  
2 42 1 2  
3 25 1 3

---

<div class="post-metadata">

**Author:** ![stepheneb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71e660/32.png) [@stepheneb](https://www.ruby-forum.com/u/stepheneb)\
**Post date:** [May 22, 2007, 12:03pm UTC](https://www.ruby-forum.com/t/can-i-use-acts-as-list-with-a-has-many-through-association/104762/2 "2007-05-22T12:03:53Z")

</div>

my\_unit.activities accesses the items of the Activities table, which  
are not marked as acts\_as\_list  
The unit\_activities items are enabled as acts\_as\_list.  
Unit → unit\_activites -------\> activties  
(acts\_as\_list) (NOT acts\_as\_list)

by adding these activities to your association, a new unit\_activities  
item was created for each activity. and those are acts\_as\_list

try this:

my\_unit.unit\_activities[0].move\_to\_bottom

On 22 Mai, 08:30, Stephen B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![stepheneb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71e660/32.png) [@stepheneb](https://www.ruby-forum.com/u/stepheneb)\
**Post date:** [May 22, 2007, 3:03pm UTC](https://www.ruby-forum.com/t/can-i-use-acts-as-list-with-a-has-many-through-association/104762/3 "2007-05-22T15:03:51Z")

</div>

> my\_unit.unit\_activities[0].move\_to\_bottom

Thanks for taking the time to write Thorsten. That makes everything MUCH  
more clear!

---

<div class="post-metadata">

**Author:** ![stepheneb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/71e660/32.png) [@stepheneb](https://www.ruby-forum.com/u/stepheneb)\
**Post date:** [June 4, 2007, 3:06pm UTC](https://www.ruby-forum.com/t/can-i-use-acts-as-list-with-a-has-many-through-association/104762/4 "2007-06-04T15:06:37Z")

</div>

Had problems with this too. Something you might want to have a look at  
is this:  
[http://euphemize.net/blog/archives/2007/06/04/learning-rails-many-to-many-relationships/](http://euphemize.net/blog/archives/2007/06/04/learning-rails-many-to-many-relationships/)

Finally got things working.

On May 22, 10:42 pm, Stephen B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
