得到了这个ActiveRecord拼图,没有人能想出一个更好的方法从self(自我是学生)中提取“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
这种字符串操作是最好的方法吗?
答案 0 :(得分:1)
看起来您正在将此方法添加到模型中以获取反映模型正在使用的表名的字符串。也许
如果是这样,你可以这样做:
def self.all
table_name
end
或者,因为那只是有效地创建了一个别名,你可以这样做:
ModelName.table_name
答案 1 :(得分:1)
如果我没有弄错你的意图,Student.all
就是你通常会做的事情。
如果您想知道Student
如何成为"students"
,它基本上涉及.class.name.downcase.pluralize
(如果保留默认表名)。 pluralize
比将"s"
添加到字符串中要聪明得多。