有没有更好的' rails'这个重命名的方法?

时间:2014-03-28 04:46:34

标签: ruby-on-rails ruby activerecord

得到了这个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

这种字符串操作是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

看起来您正在将此方法添加到模型中以获取反映模型正在使用的表名的字符串。也许

如果是这样,你可以这样做:

def self.all
  table_name
end

或者,因为那只是有效地创建了一个别名,你可以这样做:

ModelName.table_name

答案 1 :(得分:1)

如果我没有弄错你的意图,Student.all就是你通常会做的事情。

如果您想知道Student如何成为"students",它基本上涉及.class.name.downcase.pluralize(如果保留默认表名)。 pluralize比将"s"添加到字符串中要聪明得多。