2014-03-28 20 views
0

得到了這個ActiveRecord拼圖,沒有人可以找出一個更好的方法從自我(自我是學生)提取表「students」。有沒有更好的「軌道」做這個重命名?

def self.all 
    p self     # = Student 
    Database::Model.execute("SELECT * FROM #{self.to_s.downcase + "s"}").map do |row| 
    self.new(row) 
    end 
end 

這個字符串操作是最好的方式嗎?

回答

1

如果是這樣,你可以這樣做:

def self.all 
    table_name 
end 

或者,因爲這只是有效地創建一個別名,你可以這樣做,Student.all是你通常會做的。

如果你想知道如何Student變成"students",它基本上涉及.class.name.downcase.pluralize(如果你保持默認的表名)。 pluralize比將"s"添加到字符串更聰明。

+0

啊 - 好的 - 看起來我們沒有rails方法可用於這個任務 - 但我有一些新的方法來使用時間。謝謝! – dwilbank

+0

'pluralize'是Rails的一部分;我列出的其他一切都是標準的Ruby。 – Amadan

+0

順便說一句 - 我認爲我們應該使用sql命令複製activerecord方法「all」。 – dwilbank

1

看起來你正在將這種方法添加到模型中以獲取反映模型所使用的表名稱的字符串。也許。如果我沒有記錯的話對你的意圖

ModelName.table_name

相關問題