I do not know why my previous post was deleted. I am trying again.
In Firebird database one can declare computed columns. These columns
are readonly in the database. How do I stop activerecord to include
these columns in insert statements when creating a record?
I know about attr_readonly which works fine when updating.
I hope attr_accessor can work for this purpose. It wont be inserted in
db.
Can you please explain this? I do not see anything about attr_accessor
in the activerecord api.
Thanks
Op 16/04/2010 07:14, K.Arunmohan het geskryf:
K.Arunmohan probably means attr_accessible and not attr_accessor.
attr_accessor is a ruby function that generates instance variables and
getters/setters for these.
If you use attr_protected it will prevent the attributes from being
set through mass-assignment, and you would spesifically need to use
object.attribute = ‘value’ to set it.
The value will not be removed from the SQL though, like it does during
updates when you use attr_readonly, it will be set to nil. If this is
not good enough you willl need to remove the attibute manually from
the object before you create it.
before_create(:remove_attribute)
private
def remove_attribute
@attributes.delete(‘unwanted_attribute’)
end
Beware that this removes the attribute completly from the current
object. If you need to access the removed attribute after having
created the record, the record will need to be reloaded.