Rails和数据库列前缀?

时间:2011-10-04 19:21:02

标签: ruby-on-rails database-schema

我正在开发一个大型Web应用程序,我们的数据库架构使得大多数表列(id列是一个大的例外)都以表名的缩写为前缀。

我们希望将应用程序移植到Rails,但根据Rails的做法,似乎不应该以这种方式为列名添加前缀。

是否可以使用带有列名前缀的rails?我知道支持表名前缀,但我没有看到有关列名的任何内容。

有任何Rails专家有什么想法吗?

1 个答案:

答案 0 :(得分:2)

好吧,我看不出前缀列的任何问题(放在一边使用它有点无聊)。

无论如何,假设您有u_namename的用户模型...

这样做很酷:User.first.name

代替:User.first.u_name

为了达到这个目的,我建议您将这个未经测试的元编程放入初始化器中。

class ActiveRecord::Base
  def self.pretty_columns(prefix)
    skipped_columns = ["id"]       #add whatever column name you want here  
    columns.each do |column|
      column_name = column.name
      unless skipped_columns.include? column_name
        unprefixed_col = (column_name.scan /^#{prefix}(.*)/).flatten.first 

        define_method "#{unprefixed_col}" do
          self.send "#{column_name}"
        end

        define_method "#{unprefixed_col}=" do |value|
          self.send(column_name, value)
        end         
      end
    end
  end
end

然后在您的用户模型中:

class User < ActiveRecord::Base
  pretty_columns :u_
end