BACKTRACE

(condense)

Back to Posts List

GET

PlainView - Add database views to your Rails applications

PlainView is a plugin i wrote that adds a fun DSLed create_view (and drop_view of course). to your Rails migrations toolkit and harness the power of database views in your application with fun and joy.

Installation

as for now this is only available as a plugin, install as follows:

script/plugin install git://github.com/eladmeidar/PlainViews.git

Usage

First you’ll have to generate a migration

script/generate migration create_users_and_views

Than, on self.up you can use the create_view helper:

class TestView < ActiveRecord::Migration
def self.up
create_view :v_people do |t|
t.base_model :user
t.select :select => ‘id, name’, :conditions => {:name => ’elad’}
t.use_security_mode :definer
t.use_algorithm :merge
t.use_check_option :cascaded
end
end

def self.down drop_view :v_people end

end

  • select – required, select is the actual select statement, you can either use ActiveRecord#find conventions or specify a plain test query.
  • base_mode this is used only if you use the ActiveRecord conventions on the select statement, otherwise it is not required
  • use_security – i don’t know if this is supported on all databases, but in MySQL you can choose either :merge or :temptable.
  • use_algorithm – again, don’t know if this is a cross DBMS option but on MySQL you can choose between :definer or :invoker
  • check_option – same deal, on MySQL you can choose between :cascaded and :local

Database support

I investigated a bit, and the basic usage (select / base_model) should run successfully on:

  • MySQL
  • OCI
  • Oracle
  • Postgresql
  • SQLite
  • SQLServer

although i was unable to actually test it on all of them, help is appreciated here :)

Tests

Not yet actually, there will be some soon.

Todos

Tests!

POST

blog comments powered by Disqus

I Don't have cookies.

ELAD ENV

Variable Value
LINKEDIN
TWITTER
FACEBOOK
GITHUB
WWR
IRC
{ 'irc.freenode.net' => [ '#rubyonrails', '#railsbridge', '#ruby', '#mootools' ]}
SKYPE
eladmeidar

You're seeing this error because I think it is funny.