On Friday, July 17, 2015 at 4:35:35 PM UTC-6, [email protected] wrote:
>
> DataMapper creates its columns with underscores from camel cased model 
> properties, which leaves me with the following situation...
>
> DataMapper model....
>   "Artist.firstName" in mysql is defined as "Artist.first_name"
>
> Using a Sequel model, I have to do
>   "Artist.first_name"
>
> This of course forces me to change everything downstream.  I would like to 
> not have to explicitly have some custom method for every Sequel model 
> property to fix this, is there something on the model class itself that 
> will help or is there something else you could suggest?
>

You are using snake_case in the database and want to use camelCase in ruby, 
despite the case that virtually all ruby developers use snake_case? :)

There's a couple of different issues if you want to rename identifiers.  At 
the model level, you can always just alias the column methods:

class Artist < Sequel::Model
  alias firstName first_name
  alias firstName= first_name=
end

If you want to handle renamed identifiers inside dataset filters, so that 
things like Artist.where(:firstName=>'foo') will work, you need to modify 
the literalization of identifiers.  If you want to automatically convert 
snake_case to camelCase for all identifiers in the database:

Sequel.extension :inflector
DB.identifier_input_method = :underscore

You could also try setting:

class String
  def camel_case
    s = camelize
    s[0] = s[0].downcase
    s
  end
end
DB.identifier_output_method = :underscore

That should remove the need to alias in your models, as it will allow you 
to use camelCase in your ruby code, while keeping the database identifiers 
in snake_case.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to