Bryan Ward
Bryan Ward

Reputation: 6701

Single Table Inheritance (STI) column associations

When using single table inheritance does one have to be careful not to populate the columns which are specific to different models? Is there a way to specify which columns each model uses?

Upvotes: 0

Views: 1070

Answers (1)

Sarah Mei
Sarah Mei

Reputation: 18484

As far as Rails is concerned, every column can be set in every subclass. You can add logic to your subclass models to prevent certain fields from being set, but there's no automated way to do so. You could probably implement it has a before_save filter.

class MySubModel < MyModel
  UNUSED_FIELDS = %w{ field_x field_y field_z } 
  def before_save
    UNUSED_FIELDS.each {|f| self.send("#{f}=", nil)}
  end
end

Although if you have a lot of columns that are only used by one subclass, STI probably isn't the best inheritance model to use.

Upvotes: 1

Related Questions