我想要类似的东西alias_attribute
,为 DB 中的列创建一个完整的别名。例如,我有一个表,其中包含许多名为 like 的列UGLYCOLUMN
。
在查询中使用它非常不舒服:
MyModel.where('UglyColumn'.upcase => 'value')
我想要某种:
class MyModel < ActiveRecord::Base
awesome_alias_attribute {'UGLYCOLUMN' => :pretty_column, ...}
...
end
然后使用MyModel.where(pretty_column: 'value')
代替MyModel.where('UglyColumn'.upcase => 'value')
.
此外,它必须适用于复杂的查询MyModel.joins(:other_relation).where(my_models: {pretty_column: 'value'})
等。
在完美的情况下,它必须与所有 ActiveRecord 方法和属性一起使用。即,如果我首先为 primary key 创建别名awesome_alias_attribute :UGLYPRIMARYKEY, :id
,那么我想说self.primary_key = :id
并获得利润。