5

から派生する Ruby クラスをその場で、つまり動的に作成する必要がありますActiveRecord::Base。私evalは当分の間使用します:

eval %Q{
  class ::#{klass} < ActiveRecord::Base
    self.table_name = "#{table_name}"
  end
}

を使用せずにこれを行う同等の、少なくとも同等に簡潔な方法はありevalますか?

4

2 に答える 2

15

クラスがインスタンスであるClassクラスを使用できます。まだ混乱していますか?;)

cls = Class.new(ActiveRecord::Base) do
  self.table_name = table_name
end

cls.new
于 2012-06-11T12:48:42.803 に答える
4

もちろん、あります:)

class Foo
  class << self
    attr_accessor :table_name
  end
end

Bar = Class.new(Foo) do
  self.table_name = 'bars'
end

Bar.table_name # => "bars"
于 2012-06-11T12:48:31.623 に答える