rails属性名称camelcase问题

我有遗留的Sql Server数据库和Rails应用程序。 数据库中的列名都在PascalCase (FirstName, CustomerId...).

我正在寻找一种在Ruby和PascalCasing数据库中使用underscore_casing的简单方法。 我想在数据库中的FirstName列的Rails中编写first_name

camelize和underscore会将字符串转换为所需的大小写

但我正在寻找更通用的东西: ActiveRecord::Base.camelize_table_column_names = true

比如现有的ActiveRecord::Base.pluralize_table_names

就像将rjs模板中的Ruby翻译成JavaScript cameCase约定一样。

也许为所有已定义的列名设置别名?

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

您可以将其添加到关注点,并在所有相关模型中包含该问题。

我不认为有一个选项会打开这种行为。 毕竟,Rails遵循约定优于配置原则,但并非所有内部约定都是可配置的。

另一方面,您应该能够为所有列定义列别名 ,例如:

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

这样Rails就可以将下划线属性透明地“转换”为CamelCase属性:

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