rieles en ella de adaptador de PostgreSQL no se veía en pg_views
vista por sus modelos.
Debe nombrar vistas con algunos nombres, sus modelos normales sí.
Se puede crear pequeño programa, como este para resolver este problema:
# -*- 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
Coloque este archivo en RAILS_ROOT/config/initializers/postgresql_view_support.rb
.
PS:
Este código es para Rails 3.0.5.
¿Qué significa "No estoy haciendo que esto funcione"? ¿Errores? – Zabba
Error: la tabla 'nombre_del_modelo_en_plural' no existe. La solución de Viacheslav Molokov funciona, sin embargo. – Valentin