Skip to content

ggonnella/attr_hidden

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

This is a Rails plugin, which was created for Rails 2.1
but might work also for other Rails versions.

It does not contain unit tests, so if you would like to 
collaborate, this would be a nice addition.

Although this plugin does not require STI, it is probably
only really useful with single table inheritance.

Example usage with STI
======================

Let's use the example of STI given by Martin Fowler at:
http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html

table players:
name, club, batting_average, bowling_average, type

type may be: Footballer, Cricketer, Bowler

The attribute bowling_average will always be NULL in any record with type 
Cricketer or Footballer. The same is true for club in Cricketer or Bowler. 

so using ActiveRecord you have: 

class Player < ActiveRecord::Base
end

class Footballer < Player
end

class Cricketer < Player
end

class Bowler < Cricketer
end

however when you use an object of the class Bowler you can still access "club",
which make sense only for Footballer; this plugin comes in hand in this situation.

The point of this plugin is to hide from the object instance in the 
object-relational mapping the columns which are anyway always NULL in some 
of these classes.

using attr_hidden: 

class Player < ActiveRecord::Base
end

class Footballer < Player
  attr_hidden :batting_average, :bowling_average
end

class Cricketer < Player
  attr_hidden :club, :bowling_average
end

class Bowler < Cricketer
  attr_not_hidden :bowling_average
end

now each class sees only the columns which are meaningful for them.

About

Rails / ActiveRecord - Hide attributes in a model (particularly useful for Single Table Inheritance)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages