2

私は基本的な Rails アプリケーションを持っており、モデルを乾燥させるために懸念事項を使用しようとしています。開発環境ではすべてうまくいきますが、アプリを Heroku にアップロードしようとすると、常に次のエラーが表示されます。

/app/app/models/address.rb:3:in `<class:Address>': uninitialized constant Address::Persistable (NameError)

熱心な読み込みを無効にしようとしましたが、役に立ちませんでした。

ここに私のアドレスモデルがあります:

class Address < ApplicationRecord

  include Persistable

  belongs_to :city
  belongs_to :company

  validates :city_id, :human, :lat, :lng, presence: true
end

そして、これが私が「persistable」と名付けたモジュールです。app/models/concerns/persistable.rb

module Persistable
  extend ActiveSupport::Concern

  included do
    scope :historical, -> { where(is_historical: true) }
    scope :deleted, -> { where(is_deleted: true) }
    default_scope { where(is_historical: false, is_deleted: false) }

    def delete
      update_attribute(:is_deleted, true)
    end

    def archive
      update_attribute(:is_historical, true)
    end

    def revive
      update_attribute(:is_historical, false)
      update_attribute(:is_deleted, false)
    end
  end
end

私がすでにしたこと:

  • 熱心な読み込みをオフにしようとしました
  • Persistableモジュールをconcernsディレクトリの外に移動しようとしました
  • concerns自動ロード構成へのパスを含めようとしました

何も機能しませんでした。まだこの問題があります。

アップデート

autoload_paths を確認するためにコマンド フォームガイドを作成したところ、次の結果が得られました。 rails r 'puts ActiveSupport::Dependencies.autoload_paths'

D:/work/rails/www/app/models/concerns
D:/work/rails/www/app/assets
D:/work/rails/www/app/channels
D:/work/rails/www/app/controllers
D:/work/rails/www/app/helpers
D:/work/rails/www/app/jobs
D:/work/rails/www/app/mailers
D:/work/rails/www/app/models
D:/work/rails/www/test/mailers/previews
4

3 に答える 3

1

さて、問題は Heroku サーバーの構成にありました。Heroku が定数 name をブロックしているようPersistableです。出現するすべての名前をPersistabletoに変更するArchivableと、機能し始めました。

于 2016-11-22T04:16:17.987 に答える