Philip Hallstrom <[email protected]> writes:

>>>>>> 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.
>
> That does indeed look like a bug.  I just tried it and it doesn't
> work.  What's strange is the source code seems to say that "t.index"
> simply calls "add_index" just like if I'd done it normally.
>
> I just tried it using MySQL as the backend and it does NOT work either.

Thanks for confirming I am not missing something.

> You should submit a ticket to the Rails folks...

I just did:
https://rails.lighthouseapp.com/projects/8994/tickets/4101-activerecordconnectionadapterstableindex-does-not-generat-indexes

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.

Reply via email to