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: