Philip Hallstrom <[email protected]> writes: >> Philip Hallstrom <[email protected]> writes: >> >>> On Feb 24, 2010, at 11:17 AM, Jarl Friis wrote: >>> >>>> Hi. >>>> >>>> This must be the most obvious thing to do, but I just can't seem to >>>> find examples of how to do this. I would like to create a table >>>> with a >>>> table unique constraint on database level. >>>> >>>> In deed some migration code that would generate the following SQL >>>> >>>> CREATE TABLE properties ( >>>> namespace CHAR(50), >>>> name CHAR(50), >>>> value VARCHAR(100), >>>> CONSTRAINT my_constraint UNIQUE (namespace, name) >>>> ); >>>> >>> >>> create_table :properties..... >>> ..... >>> end >>> >>> add_index :properties, [:namespace, :name], :unique => true >> >> After trying this and opening my interactive SQL prompt (psql), I can >> see that this only creates an index on the table not a table >> constraint. I can still put duplicate rows in the table. > > Hrm. I can't... Rails 2.3.5, Postgresql 8.4.1 (on mac, but doubt > that matters)
I am so sorry. I did't do exactly as you said, explanation: I used create_table :properties do |t| ..... t.index [:namespace, :name], :unique => true end That does NOT create an index!!! and therefore neither a constraint!!! I gues that is a bug in the PostgreSQL adapter. But when I do as you describe using add_index syntax instead it will create an index (AND constraint!) But the fact that 't.index [:namespace, :name], :unique => true' does not generate an index is a bug, right? Thanks for all help. I appreciate the time you've spent on this. Jarl -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

