我有遗留的Sql Server数据库和Rails应用程序。数据库中的列名都在PascalCase (FirstName, CustomerId...).中
我正在寻找一种在Ruby中使用underscore_casing和在数据库中使用PascalCasing的简单方法。我想写在Rails的FirstName列在数据库中的first_name。
驼峰化和下划线将字符串转换为所需的大小写
但是我正在寻找更通用的东西,比如:ActiveRecord::Base.camelize_table_column_names = true
类似于现有的ActiveRecord::Base.pluralize_table_names
就像将rjs模板中的Ruby转换为JavaScript cameCase约定一样。
发布于 2016-04-26 17:04:36
也许可以为所有已定义的列名设置别名?
column_names.each do |column_name|
alias_attribute column_name.underscore, column_name
end您可以将其添加到一个关注点中,并将该关注点包含在所有相关模型中。
发布于 2016-04-26 16:59:28
我不认为有一个单一的选项可以打开这样的行为。毕竟,Rails遵循convention over configuration原则,但并不是所有的内部约定都是可配置的。
另一方面,您应该能够为所有列定义 ,例如:
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'https://stackoverflow.com/questions/36859240
复制相似问题