在我的數據庫中有列名,例如'delete'或'listen-control'等等。這些都不能改變,所以我想用別名來避免我的應用程序出現問題。Rails中列名的別名
我發現the following code但它是過時的(2005年8月5日)並沒有了Rails 3:
module Legacy
def self.append_features(base)
super
base.extend(ClassMethods)
end
module ClassMethods
def alias_column(options)
options.each do |new_name, old_name|
self.send(:define_method, new_name) { self.send(old_name) }
self.send(:define_method, "#{new_name}=") { |value| self.send("#{old_name}=", value) }
end
end
end
end
ActiveRecord::Base.class_eval do
include Legacy
end
如何可以別名的列名?可能嗎?
我不明白使用'delete'和'listen-control'作爲列名會出現什麼問題?你遇到錯誤還是別的什麼? – Ariejan 2010-10-25 13:13:21
監聽控制會導致問題,因爲它的名稱中有一個破折號,這使其成爲無效的ruby對象屬性。 Ruby會將「object.listen-control」解釋爲「object.listen,minus control」。並且刪除可能是保留關鍵字。我不知道你爲什麼想這樣做。有時候正確的答案是停止嘗試與紅寶石或鐵軌對抗。 – 2010-10-25 13:25:24
'define_method(「listen-control」,Proc.new {puts「bingo」})'然後'發送(「監聽控制」)'。問題在哪裏? – rthbound 2017-01-06 15:40:26