我有遗留的Sql Server数据库和Rails应用程序。列名
在数据库中都是PascalCase (FirstName, CustomerId...).
我正在寻找一种在Ruby和中使用underscore_casing的简单方法
PascalCasing在数据库中。我想在Rails中编写first_name
对于数据库中的FirstName列。
camelize和underscore会将字符串转换为所需的大小写
但我正在寻找更通用的东西:
ActiveRecord::Base.camelize_table_column_names = true
ActiveRecord::Base.pluralize_table_names
就像将rjs模板中的Ruby翻译成JavaScript cameCase一样 约定。
答案 0 :(得分:3)
可能为所有已定义的列名设置别名吗?
column_names.each do |column_name|
alias_attribute column_name.underscore, column_name
end
您可以将其添加到问题中,并在所有相关模型中包含该问题。
答案 1 :(得分:1)
我认为没有一个选项可以启用此类行为。毕竟,Rails遵循convention over configuration原则,但并非所有内部约定都是可配置的。
另一方面,您应该能够为所有列定义column aliases ,例如:
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'