在rubyonrails中,如何从ActiveRecord :: Relation对象获取关联的模型类?

假设我有一个模型:

class Post end posts = Post.where(***) puts posts.class # => ActiveRecord::Relation 

那么如何通过变量’posts’获取模型类名,也许是一些名为model_class_name的方法:
put posts.model_class_name#=>发布

谢谢 :)

ActiveRecord :: Relation的#klass属性返回构建关系的模型类:

 arel = User.where(name: "fred") arel.klass # User 

获取class级名称:

 arel.klass.name 

在ActiveRecord 4.2.4中测试

您问题的最简单直接的答案是:

 posts.first.class.name 

这相当于写作:

 posts.[0].class.name 

您可以这样做,因为您的查询将返回可枚举的结果。 (ActiveRecord :: Relation实现了Ruby的Enumerable接口)。

– 斯科特