I suspect that many people have been working successfully with uuid, guid, or any other db-specific unique identifier data type for years now. I know this has been the case in the SQL Server adapter. So finding these implementations for hints would be a great start. Here are some links to my work in the SQL Server adapter.
Wiki Article http://git.io/Ttb6mg Implementation & Test Details https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/master/lib/active_record/connection_adapters/sqlserver/database_statements.rb#L186-192 https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/master/test/schema/sqlserver_specific_schema.rb#L80-89 https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/master/test/cases/specific_schema_test_sqlserver.rb#L161 So there are a few things going on here. A summary: 1) SQL Server has a notion of unique identifiers where one is random and the other sequential. One is faster, the other more secure, etc. Which is better for a column primary key is debatable I think. Especially since sequential is not even sequential per table, but per system. 2) It is really easy to setup a schema where the database champions assigning a new unique identifier. However, getting that key back on create/insert is a bit tricky since most low level connection modes do not treat unique identifier columns as real primary keys. Hence if you let the db generate the value, an insert would have to be followed by another crafted select. The SQL Server supers up to ActiveRecord's #last_inserted_id and falls back to SCOPE_IDENTITY() which is fine for normal primary keys, but I do not know of a way to do the same (even assuming I reflected on the table having unique identifier or not) to get the random string that is a uuid column. A show stopper in itself. 3) The challenges of #2 are the reason I tell people in the wiki article that it is much easier if you assign the unique identifier in a simple call back. For these reasons, I am not seeing a way that ActiveRecord can champion a datatype like this at a low level. It seems to me to have always supported unique identifiers in simple patterns and that may be good enough. Thoughts? - Ken On Aug 7, 2012, at 2:17 AM, Chris Lloyd wrote: > (Cross post from #7278) > > Now that ActiveRecord supports uuid datatypes (#6713) I suspect that having > UUID instead of auto-incrementing primary keys will become fairly popular. > It's already possible to do this yourself but perhaps it should be built into > ActiveRecord? > > I'm happy to contribute a patch but was wanting to solicit feedback on wether > this is wanted and if anybody had ideas on how the configuration should go. > > Chris -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" 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-core?hl=en.
