我如何使用ActiveRecord从分离的脚本调用rails回调?

时间:2017-11-27 10:50:35

标签: ruby-on-rails ruby postgresql activerecord callback

我有一个简单的rails应用程序,里面有活动记录模型和回调。

class Place < ApplicationRecord
  after_update :update_markers

  private

  def update_markers
    …
  end
end

我也有分开的脚本,可通过'active_record'

访问我的bd
 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’)

当我尝试更新此脚本中的值时,回调不会调用。我怎么能调用它?

1 个答案:

答案 0 :(得分: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