Search code examples
ruby-on-railsruby-on-rails-3ruby-on-rails-4ruby-on-rails-3.2ancestry

Creating has_many association with ancestry gem


I installed ancestry gem & create Location Structure.

  • Alaska
  • California
    • Los Angeles
    • Fresno
    • Cincotta (Fresno)
    • Hammond (Fresno)
      • Melvin (Fresno)
        • Melvin 1
        • Melvin 2
        • Melvin 3
  • Arizona
  • Colorado

My post and location model

class Location < ActiveRecord::Base
 include Tree
 has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :location
end

When i am add new post, how to display only depth 4 level ( Melvin 1,Melvin 2,Melvin 3) as drop down.


Solution

  • You have to enable cache depth so you can use at_depth:

    Location.all.at_depth(4)
    

    Thiscan be used to render a select input element:

    <%= select :location_id, Location.all.at_depth(4) { |l| [ l.name, l.id ] } %>