2012-07-26 77 views
14

我正在使用rails 3.2.6,我需要创建一个数据库VIEW。像往常一样,我创建了一个迁移,我尝试使用execute方法实现目标。通过迁移创建Rails 3.2.6&数据库视图

不幸的是,迁移会生成一个表格,而不是视图。为什么?

提前许多感谢, 莫罗

UPDATE:

我想有一些如下:

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 

不幸的是这种迁移创建一个表...

更新: 以前的代码工程!我正在执行rake db:reset而不是rake db:migrate:reset(我的错误)

+1

我不确定是否有可能生成此类迁移。使用原始SQL创建视图。 – 2012-07-26 09:57:39

+0

我正在做同样的事情(除了我正在使用def def和def down,而不是def self.up和def self.down - 是否有区别?),并且我得到相同的行为:它创建一个视图,当我运行迁移,但将create_table命令添加到schema.rb文件。 – Ladlestein 2013-01-18 19:33:20

回答

2

看起来你已经回答了你自己的问题,但我会提出一个相关的建议。试试rails_sql_views gem。该链接转到GitHub上的原始回购。不过,它看起来不再被维护。这将是值得看看network graph并尝试其中一个叉。我不是积极任何叉支持Rails 3.2.6,但我建议通过他们看。约三年前Christian Eichhorn added support for the mysql2 adapter

2

我做了一个名为rails_db_views的宝石,它与Rails 4兼容,并且仍然保留。

Regards,

Yacine。

+0

嗨Yacine,欢迎来到StackOverflow。而不是指向github上的外部示例,如果您可以在此处指定您解决问题的方法,那么对于寻找解决方案的其他人来说,这会更有用。 – 2015-03-27 03:47:32

+0

你好阿莫斯!谢谢你的评论。实际上,问题是Rails中的迁移系统并没有处理视图......所以没有“简单”的系统,我认为你需要实现一种新的方式来管理视图。这就是为什么我给了这个解决方案;) – Yacine 2015-03-27 05:01:25