加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 将Rails模型连接到数据库视图?

发布时间:2020-12-16 23:16:19 所属栏目:百科 来源:网络整理
导读:我听说你可以将rails中的模型绑定到数据库视图(而不是通常的表格),这只是通过创建一个具有模型表通常具有的名称的视图来实现圆顶. 我没有让它在带有PostgreSQL 9的rails 3.0.5中运行. 有什么我想念的吗? 解决方法 它的 postgresql适配器中的Rails没有在pg_v
我听说你可以将rails中的模型绑定到数据库视图(而不是通常的表格),这只是通过创建一个具有模型表通常具有的名称的视图来实现圆顶.

我没有让它在带有PostgreSQL 9的rails 3.0.5中运行.

有什么我想念的吗?

解决方法

它的 postgresql适配器中的Rails没有在pg_views视图中查找它的模型.

你应该用一些名字来命名视图,你的普通模型可以.

你可以创建一些hack,像这样来解决这个问题:

# -*- encoding: utf-8 -*-

ActiveSupport.on_load(:active_record) do
  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
    def table_exists?(name)
      return true if super
      name          = name.to_s
      schema,table = name.split('.',2)

      unless table # A table was provided without a schema
        table  = schema
        schema = nil
      end

      if name =~ /^"/ # Handle quoted table names
        table  = name
        schema = nil
      end

      query(<<-SQL).first[0].to_i > 0
          SELECT COUNT(*)
          FROM pg_views
          WHERE viewname = '#{table.gsub(/(^"|"$)/,'')}'
          #{schema ? "AND schemaname = '#{schema}'" : ''}
      SQL
    end
  end
end

将其放入文件RAILS_ROOT / config / initializers / postgresql_view_support.rb.

PS:

此代码适用于Rails 3.0.5.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读