问题
I'm using rails 3.2.6 and I need to create a database VIEW. As usual I created a migration and I tried to achieve the goal using the execute method.
Unfortunately the migration generates a table, not a view. Why?
Many thanks in advance, Mauro
UPDATE:
I would like to have something as follows:
class CreateMyView < ActiveRecord::Migration
def self.up
execute <<-SQL
CREATE VIEW my_view AS SELECT ...
SQL
end
def self.down
execute <<-SQL
DROP VIEW my_view
SQL
end
end
Unfortunately this migration creates a table...
UPDATE: the previous code works! I was executing rake db:reset instead of rake db:migrate:reset (my mistake)
回答1:
It looks like you've answered your own question, but I'll make a related suggestion. Try the rails_sql_views gem. That link goes to the original repo on GitHub. It looks like it's not being maintained anymore, though. It would be worth looking at the network graph and trying one of the forks. I'm not positive that any of the forks supports Rails 3.2.6, but I'd suggest looking through them. Christian Eichhorn added support for the mysql2 adapter about three years ago.
回答2:
I've made a gem called rails_db_views which is compatible with Rails 4, and still maintained.
Regards,
Yacine.
来源:https://stackoverflow.com/questions/11666736/rails-3-2-6-database-views-creation-through-migrations