3

我想要类似的东西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并获得利润。

4

0 回答 0