从表名初始化模型对象

时间:2012-02-21 11:44:54

标签: ruby-on-rails ruby-on-rails-3 activerecord active-relation

有没有办法从其表名中实例化命名空间的模型对象?

例如:给定表school_students,模型School::Student,id 30,我可以这样做:

student = get_from_table_name_and_id("school_students", 38)

1 个答案:

答案 0 :(得分:0)

此实施应该有效

def get_from_table_name_and_id(klass, id)
  klass.gsub('_','/').classify.constantize.find(id)
end

输出:

irb(main):004:0> "school_students".gsub('_','/').classify                                                                                                                            
=> "School::Student"

Rails上的命名约定是一个命名空间,由String

中的/表示