According to Rails API, it is possible to write something like:
create_table :my_table do |t|
t.index :login, unique: true
But I'm getting the following error:
undefined method `index' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0x00000000efd7d8>
Is this a bug or is the API outdated? Or maybe, I'm doing something wrong...
Thanks in advance,
P.S: I'm testing in SQLite3.
This is a question for
http://groups.google.com/group/rubyonrails-talk/topics, not core.
hint: Define you index after the table is created. Use a change_table block.
I know there is the rails-talk list and I've actually posted there last week about my new gem rails-web-console:
What happened is that I overlooked the migration guides and didn't note that the syntax is only valid while changing a table. Sorry for the confusion, but I would like to take this opportunity to ask why this syntax cannot be used for creating table as well.
I think it is much cleaner than using the old (actually current too) syntax "add_index" after the table creation block.
Is that difficult to achieve?
Sorry for any confusion. I hope this is the correct list to discuss that new feature (I've even changed the message subject).
In early days I have several confusion on t.index too. As far as my knowledge go, I feel that some database engine doesn't support inline index creation so that this is the only way to do it?
Even if the database doesn't support inline index creation, I guess AR migrations could defer the index creation on these situations without altering the syntax...
But I haven't taken a look at the source, so I'm not sure if it would be easy to implement such a feature...