【问题标题】:Rails 3.2.6 & database views creation through migrationsRails 3.2.6 和通过迁移创建数据库视图
【发布时间】:2012-07-26 09:50:58
【问题描述】:

我使用的是 rails 3.2.6,我需要创建一个数据库视图。像往常一样,我创建了一个迁移,并尝试使用 execute 方法实现目标。

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

提前非常感谢, 毛罗

更新:

我想要的东西如下:

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(我的错误)

【问题讨论】:

  • 我不确定是否可以生成这样的迁移。使用原始 SQL 创建视图。
  • 我在做同样的事情(除了我使用 def up 和 def down,而不是 def self.up 和 def self.down - 有区别吗?)我得到了同样的行为:当我运行迁移时它会创建一个视图,但会在 schema.rb 文件中添加一个 create_table 命令。

标签: mysql ruby-on-rails-3.2 rails-migrations


【解决方案1】:

您似乎已经回答了自己的问题,但我会提出相关建议。试试rails_sql_views gem。该链接指向 GitHub 上的原始存储库。不过,看起来它不再被维护了。值得一看 network graph 并尝试其中一个叉子。我不肯定任何分支都支持 Rails 3.2.6,但我建议仔细查看它们。 Christian Eichhorn added support for the mysql2 adapter 大约三年前。

【讨论】:

    【解决方案2】:

    我制作了一个名为 rails_db_views 的 gem,它与 Rails 4 兼容,并且仍在维护。

    问候,

    亚辛。

    【讨论】:

    • 嗨 Yacine,欢迎来到 StackOverflow。与其指向 github 上的外部示例,如果您可以在此处指定您为解决问题所做的工作,这对于寻求解决方案的其他人会更有用。
    • 你好阿莫斯!谢谢你的评论。实际上问题是 Rails 中的迁移系统不是用来处理视图的……所以没有“简单”的系统,我认为你需要实现一种新的方法来管理视图。这就是我给出这个解决方案的原因;)
    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2010-12-05
    • 2013-04-20
    • 2012-09-18
    相关资源
    最近更新 更多