2017-11-27 3 views
0

나는 액티브 레코드 모델과 콜백을 포함하는 간단한 레일 앱을 가지고있다.ActiveRecord를 사용하여 분리 된 스크립트에서 레일스 콜백을 호출하는 방법은 무엇입니까?

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

관련 문제