2011-01-12 4 views
3

У меня есть миграция, которая будет динамически создавать таблицы на лету за дату. Что-то вроде этого:Динамическое создание моделей для таблицы в рельсах

class CreateCollectorPeriodTable < ActiveRecord::Migration 

    def self.create_with(name) 
    create_table name.to_sym do |t| 
     t.string :text, :limit => 1024 
    end 
    end 
end 

Я хочу, чтобы создать модель, которая будет получить доступ к этой миграции ..

Я прочитал это: Rails Generate Model from Existing Table?, но другой вопрос кто-то объяснил, почему я не должен пытаться сделать один модель подходит для многих столов ..

Любые предложения?

+0

Не могли бы вы объяснить немного больше причин этого? Чего вы пытаетесь достичь? – nathanvda

ответ

4
class CreateCollectorPeriodTable < ActiveRecord::Migration 
    # name should be plural 
    # i.e.: name = 'chickens' 
    def self.create_with(name) 
    create_table name.to_sym do |t| 
     t.string :text, :limit => 1024 
    end 
    model_file = File.join("app", "models", name.singularize+".rb") 
    model_name = name.singularize.capitalize 
    File.open(model_file, "w+") do |f| 
     f << "class #{model_name} < ActiveRecord::Base\nend" 
    end 
    end 
end 
+0

ничего себе это пятно. Спасибо огромное! – Tommy

+1

Это будет работать. Только мне кажется почти идентичным «rails g model text: string', поэтому не уверен, что такое прецедент. – nathanvda

+0

@nathanvda, абсолютно :) для меня это довольно странная задача – fl00r

Смежные вопросы