我希望像alias_attribute
之类的东西为DB中的列创建一个完整的别名。例如,我有一个包含许多名为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方法和属性。即如果我首先为主键awesome_alias_attribute :UGLYPRIMARYKEY, :id
创建别名,那么我想说self.primary_key = :id
并获利。