尝试访问“帐单索引”页时出现此错误:

ActiveRecord::StatementInvalid in BillsController#index
PG::UndefinedTable: ERROR: relation "bills" does not exist LINE 5:
WHERE a.attrelid = '"bills"'::regclass ^ : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid),
a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN
pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE
a.attrelid = '"bills"'::regclass AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum

关于如何从Sqlite3切换到Postgres,我遵循了以下指南:
http://www.daveferrara1.com/ruby-in-rails-switch-from-sqlite3-to-postgres/
以下是有关我的应用程序的一些信息:
我有三个模型,财产,帐单和居民我可以访问resident和property的索引页,我可以创建新属性并对其进行编辑,但不能使用bills。
这个问题出现在转换之后在转到博士后之前,一切都很顺利。
我的database.yml就是这样的:
development:
  adapter: postgresql
  encoding: unicode
  database: demo_test_development
  pool: 5
  username:
  password:
  timeout: 5000

test:
  adapter: postgresql
  encoding: unicode
  database: demo_test_test
  pool: 5
  username:
  password:
  timeout: 5000

production:
  adapter: postgresql
  encoding: utf8
  database: demo_test_production
  pool: 5
  username:
  password:

我的模型:
class Bill < ActiveRecord::Base
  belongs_to :property
  belongs_to :user
  belongs_to :resident
  has_many :photos
end

class Property < ActiveRecord::Base
  belongs_to :user
  has_many :photos
  has_one :resident
  has_many :bills
  validate :address , :city , :country
end

class Resident < ActiveRecord::Base
    belongs_to :user
    has_many :photos
    has_one :property
    has_many :bills
    validates_presence_of :name
end

这是我的BillsController显示错误:
class BillsController < ApplicationController
  before_action :set_bill, only: [:show, :edit, :update]
  before_action :authenticate_user!

  def index
    @bills = current_user.bills
  end

  def show
    @bill = Bill.find(params[:id])
    @photos = @bill.photos

  end

  def new
    @bill = current_user.bills.build
  end

  def create
    @bill = current_user.bills.build(bill_params)
    if @bill.save
      if params[:images]
        params[:images].each do |image|
          @bill.photos.create(image: image)
        end
      end

      @photos = @bill.photos
      redirect_to edit_bill_path(@bill), notice: "Saved"
    else
      render :new
    end
  end

  def edit
    if current_user.id == @bill.user.id
      @photos = @bill.photos
    else
      redirect_to root_path, notice: "You don't have access to this page"
    end
  end

  def update
    if @bill.update(bill_params)
      if params[:images]
        params[:images].each do |image|
          @bill.photos.create(image: image)
        end
      end

      redirect_to edit_bill_path(@bill), notice: "Updated"
    else
      render :edit
    end
  end

  private

  def set_bill
    @bill = Bill.find(params[:id])
  end

  def bill_params
    params.require(:bill).permit(:due_date, :amount, :bill_type, :bill_status, :description, :property_id, :resident_id)
  end
end

最佳答案

表名是“bills”,但您的查询正在查找“bills”。那是不同的名字!

10-05 23:07