Skip to content

Instantly share code, notes, and snippets.

@andys
Created January 27, 2012 00:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andys/1686172 to your computer and use it in GitHub Desktop.
Save andys/1686172 to your computer and use it in GitHub Desktop.
Yo I heard you liked parents in your parents
# rails generate model region name:string parent_id:integer
class Region < ActiveRecord::Base
belongs_to :parent, :class_name => self.to_s
def parent_name
parent.name
end
def superparent_name
parent.parent.name
end
end
Region.create!(id: 1, name: 'level0')
Region.create!(id: 2, name: 'level1', parent_id: 1)
Region.create!(id: 3, name: 'level2', parent_id: 2)
Region.includes({:parent => :parent}).where(id: 3).first.superparent_name
# Region Load (0.3ms) SELECT "regions".* FROM "regions" WHERE "regions"."id" = 3 LIMIT 1
# Region Load (0.2ms) SELECT "regions".* FROM "regions" WHERE "regions"."id" IN (2)
# Region Load (0.2ms) SELECT "regions".* FROM "regions" WHERE "regions"."id" IN (1)
# => "level0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment