Rails_on_pg: PostgreSQL views, functions, triggers, FKs for rails migrations
github.com
github.com
create_view :active_patients do |view|
view.select 'p.patient_id as id' ,'p.id as visit_id'
view.from 'patients as p'
view.join 'left join demographics d on d.visit_id=v.id'
view.conditions 'p.status'=>'active','p.name' => 'John' #or "p.status='active' and p.name='John'"
end
is easier than: create or replace view patient.active_patients as
select p.patient_id as id, p.id as visit_id
from patients p
left join demographics d on d.visit_id=v.id
where p.status='active' and p.name = 'John';
I don't use rails, and the ORM we use generates in reverse, so we define our database using SQL and then generate the model layer from that. We use a lot of views, stored procs and postgresql features such as table inheritance, which no ORM seems to handle going the forward route.Is it because you can't do straight SQL in rail's migration stuff?
Thanks.
Since this particular plugin is aimed directly at postgres, I am not sure it really adds a great deal of value. It might be useful if it maintained the schema.rb file properly, but it does not.
So (at least IMO), I don't think this plugin is all that helpful. You can run straight SQL in rails migrations (and we do that whenever we need anything postgres specific).
Leaves me wondering why database neutrality is so important that you miss a lot of optimal features of a specific database for it. I can't think of one time in the last 15 years where I've moved a database from one particular database software to another (well not entirely true, I've moved around a few but always on Sybase derivatives, ie Sybase -> SQL Server).
Personally, I use Rails migrations as a versioning system for my DB schema, but within the migrations itself, it's just a straight "execute" call with the SQL to create, alter, or drop the tables as required.
http://github.com/maxim/sexy_pg_constraints
You do have to switch to sql export for the schema which is kind of a bummer because it's not supported as well by Rails as the "db independent" (aka lowest common denominator) schema.rb file.