RE: [Rails] Re: read-only access to the database

From: rubyonrails-talk@googlegroups.com
[mailto:rubyonrails-talk@googlegroups.com] On Behalf Of William Fisk
Sent: Monday, March 26, 2007 12:34 PM
To: rubyonrails-talk@googlegroups.com
Subject: [Rails] Re: read-only access to the database

Dan,

Thanks for that - I am going to do that too!

I must admit I thought that 'readonly' might have been a parameter of
the database connection and I looked for that, but apparently not.

I know some vendors (such as Oracle) support a restricted mode, but it
requires connecting to the database first, then immediately issuing an
"alter session" command. How you would implement that in Rails I'm not
sure. Perhaps some sort of "post_connect" method?

I like the idea of redefining 'write_attribute' and save, and I think
that it is worth doing, because you will catch some cases
where a write
has been attempted
but you still cannot be sure that a write (or a restructure?)
will not
happen some other way.

The best route still seems to be to define a user that only has read
access to the
database.

Oh, definitely. This was just the way to do it through Rails, not at the
DB layer. And, like you said, you can always write it in such a way as
to track anyone who attempts to make a write attempt (presumably through
a backend interface, such as xml-rpc).

Thanks again for the ideas.

You're welcome.

Regards,

Dan

This communication is the property of Qwest and may contain confidential or
privileged information. Unauthorized use of this communication is strictly
prohibited and may be unlawful. If you have received this communication
in error, please immediately notify the sender by reply e-mail and destroy
all copies of the communication and any attachments.

Add this to your model

class User < ActiveRecord::Base

Ensure that this record can not be saved or modified in any way

If save is called, this will throw an exception.

def readonly?() true end

end

That will prevent anything from saving. I use that a lot. :slight_smile: