Hello,
I have this class in my Rails project :
class CreateModels < ActiveRecord::Migration
def self.up
create_table :models do |t|
t.string :model, :default => “Model”, :limit => 10
t.string :description, :default => “short Description”, :limit =>
20
t.string :longdescription, :default => “long Description”, :limit
=> 40
t.timestamps
end
end
def self.down
drop_table :models
end
end
Now, if I need the same fields in another table, I need to put again :
.
.
t.string :description, :default => “short Description”, :limit => 20
t.string :longdescription, :default => “long Description”, :limit => 40
.
.
How can I create something like a “template” or “pattern” that includes
for example “:default => “short Description”, :limit => 20”, then I only
use this template to create the new table. Something like this :
.
.
t.Template2 :description, # ‘Template2’ includes “:default => “short
Description”, :limit => 20”
t.Template3 :longdescription, # ‘Template3’ includes “:default => “long
Description”, :limit => 40”
.
.
Then I will use this new type to create new fields with the same
characteristics in all the tables.
Thanks,
Jose.
On 18 Sep 2008, at 09:26, Jose G. wrote:
“long Description”, :limit => 40"
.
.
Then I will use this new type to create new fields with the same
characteristics in all the tables.
Well you could certainly add methods to the TableDefinition class
(which is the class of the objects yielded by the create_table block)
if you wanted to.
Fred
Thanks Fred,
If I have :
class CreateModels < ActiveRecord::Migration
def self.up
create_table :models do |t|
t.Template1 :model,
t.Template2 :description,
t.Template3 :longdescription,
t.timestamps
end
end
I need to create the method inside “CreateModels” ? or Inside “Models”.
And then how can I use this “Template” in another “Table definition”.
Thanks.
On 18 Sep 2008, at 09:44, Jose G. wrote:
t.Template3 :longdescription,
t.timestamps
end
end
I need to create the method inside “CreateModels” ? or Inside
“Models”.
Neither. I was suggesting extending the TableDefinition (defined in
schema_defintion.rb)
Fred
On Sep 18, 7:29 pm, “Jose G.” [email protected] wrote:
Thanks agai Fred,
If I change the file in rails directory :
Neither. I was suggesting extending the TableDefinition
(defined in
schema_defintion.rb)
I wouldn’t do that. This is ruby - you can reopen a class whenever you
feel like it, eg stick it in a file in lib and require that or (if
you’re going to reuse it across apps) make it into a plugin.
Fred
Thanks agai Fred,
If I change the file in rails directory :
Neither. I was suggesting extending the TableDefinition
(defined in
schema_defintion.rb)
Then If I upgrade to another rails version I need to modify the file
again ?
Exists another way to put it inside the rails application independent
from rails upgrade ?
Thanks,
Jose.