slava
April 9, 2009, 6:42am
1
I need to create a table replacing default integer id with a string id
and making a combo of (id and version) unique primary key. Here is
what I’ve got so far.
class CreateCatalogs < ActiveRecord::Migration
def self.up
create_table :catalogs, :id => false do |t|
t.string :id, :limit => 20, :null => false
t.string :version, :default => ‘01’
t.timestamps
end
end
def self.down
drop_table :catalogs
end
end
slava
April 9, 2009, 6:57am
2
alternatively if i leave default integer id as primary key I need to
make sure combo of name and version are unique.
create_table :catalogs do |t|
t.string :name
t.string :version, :default => '01'
t.timestamps
end
slava
April 9, 2009, 7:15am
3
On Thu, Apr 9, 2009 at 6:56 AM, slava [email protected] wrote:
To ensure uniqueness, you can add an index
add_index :catalogs, [:name, :version], :unique => true
Andrew T.
http://ramblingsonrails.com
http://www.linkedin.com/in/andrewtimberlake
“I have never let my schooling interfere with my education” - Mark Twain
slava
April 9, 2009, 8:58am
4
hi slave,you can do it use the connection method of migration
use it like ActiveRecord::Base.connection_pool.checkout
2009/4/9 slava [email protected]
–
明天会更好
slava
April 9, 2009, 7:16am
5
on the same subject…
I need to ensure uniqness of name in a table. I tried setting collumn
to unique (see below) but that did not work. I still can create
records with same name field.
create_table :properties do |t|
t.string :name, :unique => true
t.string :description
t.timestamps
end