2017-11-27 12 views
0

私はアクティブなレコードモデルとコールバックのある簡単なレールアプリを持っています。ActiveRecordで分割されたスクリプトからrailsコールバックを呼び出す方法は?

class Place < ApplicationRecord 
    after_update :update_markers 

    private 

    def update_markers 
    … 
    end 
end 

私は呼んでいません。このスクリプトのコールバック内で値を更新しようとすると、私はまた、「active_record」

require 'active_record' 

ActiveRecord::Base.establish_connection({ 
    adapter: 'postgresql', 
    encoding: 'unicode', 
    username: 'postgres', 
    host: 'localhost', 
    database: 'myapp_development' 
}) 

class Place < ActiveRecord::Base 
    self.table_name = “places” 
end 

Place.last.update(name: ‘My name’) 

を通じて私のBDへのアクセス権を持っているスクリプトを分離しています。どのように私はそれを呼び出すことができますか?

答えて

0

スクリプト内にモデルをロードしてください。require [root]/app/models/place.rb今はモデルを拡張するのではなく、定義するだけなので、コールバックはありません。 Railsはモデルを自動ロードしますが、あなたのスクリプトにはそれについての情報はありません。

あなたのスクリプトがあなたのRailsアプリケーションから完全に分離されている場合は、他に選択肢がなく、モデルコールバックを複製するだけです。あなたのスクリプトで:

class Place < ActiveRecord::Base 
    self.table_name = “places” 
    after_update :update_markers 

    private 

    def update_markers 
    … 
    end 
end 
+0

もっと多くの依存性があり、すべてをロードしたくないため、このスクリプトの中にモデルを読み込むことができません。 イベントが発生したときにスクリプトを実行します(別のサービスのもの)。このスクリプトは、私のアプリの外に置く必要があります。 –

+0

'update_markers'にサードパーティの依存関係はありますか? – AntonTkachov

+0

私の答えを更新しました – AntonTkachov

関連する問題