我正在开发一个大型Web应用程序,我们的数据库架构使得大多数表列(id列是一个大的例外)都以表名的缩写为前缀。
我们希望将应用程序移植到Rails,但根据Rails的做法,似乎不应该以这种方式为列名添加前缀。
是否可以使用带有列名前缀的rails?我知道支持表名前缀,但我没有看到有关列名的任何内容。
有任何Rails专家有什么想法吗?
答案 0 :(得分:2)
好吧,我看不出前缀列的任何问题(放在一边使用它有点无聊)。
无论如何,假设您有u_name
等name
的用户模型...
这样做很酷: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