rails attribute names camelcase issue

 ̄綄美尐妖づ 提交于 2020-01-02 07:32:11

问题


I have legacy Sql Server database and Rails applications. Column names in database are all in PascalCase (FirstName, CustomerId...).

I'm searching for an easy way to use underscore_casing in Ruby and PascalCasing in database. I would like to write first_name in Rails for FirstName column in database.

camelize and underscore will convert a string to required casing

but I'm looking for something more general like: ActiveRecord::Base.camelize_table_column_names = true

like existing ActiveRecord::Base.pluralize_table_names

Just like translating Ruby in rjs templates to JavaScript cameCase convention.


回答1:


Maybe set up aliases for all defined column names?

column_names.each do |column_name|
  alias_attribute column_name.underscore, column_name
end

You could add that to a concern and include that concern in all relevant models.




回答2:


I don't think there is a single option that would switch on such behavior. Rails, after all, obeys the convention over configuration principle but not all internal conventions are configurable.

On the other hand you should be able to define column aliases for all of your columns, e.g:

class Customer < ActiveRecord::Base
   alias_attribute :first_name, :FirstName
   # etc...
end

This way Rails should transparently "translate" the underscore attributes to CamelCase ones:

Customer.where(first_name: "John")
# => SELECT `customers`.* FROM `customers` WHERE `customers`.`FirstName` = 'John'


来源:https://stackoverflow.com/questions/36859240/rails-attribute-names-camelcase-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!