2017-11-27 2 views
0

Ich habe eine einfache Rails App mit aktivem Rekordmodell und Callback innerhalb.Wie kann ich Rails Callback von getrennten Skript mit ActiveRecord aufrufen?

class Place < ApplicationRecord 
    after_update :update_markers 

    private 

    def update_markers 
    … 
    end 
end 

Ich habe auch Skript getrennt, die den Zugriff auf meine bd durch ‚active_record‘ haben

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’) 

Wenn ich versuche, Werte innerhalb dieses Skript Rückruf nicht aktualisiert aufrufen. Wie kann ich es anrufen?

Antwort

0

Stellen Sie sicher, dass Sie Ihr Modell in Ihr Skript laden require [root]/app/models/place.rb. Momentan sieht es so aus, als würden Sie Ihr Modell nicht erweitern, sondern nur definieren, so dass es dort keinen Rückruf geben wird. Rails Autoload-Modelle, aber Ihr Skript hat keine Ahnung davon.

Wenn Ihr Skript vollständig von Ihrer Rails-App getrennt ist, haben Sie keine andere Wahl, als Ihren Modell-Callback zu duplizieren. In Ihrem Skript:

+0

Ich kann mein Modell in diesem Skript nicht laden, weil es mehr Abhängigkeiten hat und ich nicht alles laden will. Ich habe mein Skript ausgeführt, wenn ein Ereignis aufgetreten ist (etwas von einem anderen Dienst). Dieses Skript muss sich außerhalb meiner App befinden. –

+0

Hat 'update_markers' irgendwelche Abhängigkeiten von Drittanbietern? – AntonTkachov

+0

Aktualisiert meine Antwort – AntonTkachov

Verwandte Themen