2

我正在使用 RoR3.2,现在有一堆模型对象。我想做的一件事是有一个 mysql 视图,但我不确定你把它放在哪里。

class CreateQv < ActiveRecord::Migration
  def up

    execute <<-SQL
      drop view qv
    SQL

    execute <<-SQL2 #abbreviated view 
create VIEW qv AS select locations.name AS val from locations where (locations.is_enabled = 1) union select concat(menu_items.header,' ',menu_items.detail) AS val from menu_items where (menu_items.is_enabled = 1)
    SQL2
  end
end

我通过更新它

rake db:reset

但它创建了一个表,我不知道为什么。这是创建视图的正确方法吗?如果是,为什么要创建这个表?

谢谢

4

1 回答 1

0

AFAIK 这是视图的正确行为,创建一个伪表,每次更新关联表时都会更新。我的问题是:为什么要为 Rails 应用程序创建视图?我知道创建视图的唯一原因是拒绝某些用户完全访问您的数据。但是在 Rails 应用程序中,您可以控制向谁展示什么以及他们可以改变什么。

我可能非常错误,因为我对关系数据库不太熟悉。

编辑:您可以通过创建一个新位置并在您的视图中查找它来测试您的视图是否有效

于 2013-05-04T11:04:52.653 回答