An open API service indexing awesome lists of open source software.

https://github.com/ggonnella/attr_hidden

Rails / ActiveRecord - Hide attributes in a model (particularly useful for Single Table Inheritance)
https://github.com/ggonnella/attr_hidden

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

        

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.