5

Rails アプリの外部でスクリプトを作成するために、ActiveRecord を継承するクラスを動的に作成できるようにしたいと考えています。

私はこのようなものにこだわっています:

require 'active_record'

def create_arec(table_name)
  Class.new ActiveRecord::Base do
    self.table_name = table_name
    yield
  end
end

Band = create_arec 'bands' do
  scope :only_rock, -> {where genre: 'rock'}
end

rock_bands = Band.only_rock #undefined method `only_rock'

どうすればそれを機能させることができますか、または誰かがそれを行うためのより良い方法を教えてくれますか?

4

1 に答える 1

5

ばっちり成功:

def create_arec(table_name, &block)
  klass = Class.new(ActiveRecord::Base){self.table_name = table_name}
  klass.class_eval &block
  klass
end

ありがとう@phoet

于 2013-10-11T14:00:05.110 に答える