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'