在我的寶石中,我有Rails生成器來構建遷移。這種遷移非常簡單:如何定義動態AR表名
class MigrateGenerator < Rails::Generators::Base
source_root File.expand_path(File.join(File.dirname(__FILE__), '../generators/templates'))
def create_migration
template "migration_template.rb", "db/migrate/create_orders_table.rb"
end
end
class CreateOrdersTable < ActiveRecord::Migration
def self.up
create_table(:my_default_name) do |t|
#some columns
end
#indexes
end
end
class Order < ActiveRecord::Base
self.primary_key = :id
self.table_name = 'my_default_name'
end
我的問題:有沒有可能允許用戶定義自己的表名?我知道我可以輕鬆地將參數傳遞給我的生成器,但是如何更改已定義的self.table_name = 'my_default_name'
'my_default_name'從哪裏來?對於每個用戶 – emaillenin
是否要將'self.table_name'作爲參數傳遞給generator? – lx00st
'my_default_name'顧名思義是由我自己定義的。所以總是表名將是'my_default_name'。我想允許用戶使用自定義名稱生成遷移 – dewastator