モデルがあるとします:
class Post
end
posts = Post.where(***)
puts posts.class # => ActiveRecord::Relation
次に、変数「posts」を介してモデルクラス名を取得するにはどうすればよいですか。おそらく、model_class_name と呼ばれるメソッドです:
puts posts.model_class_name # => Post
ありがとう :)
モデルがあるとします:
class Post
end
posts = Post.where(***)
puts posts.class # => ActiveRecord::Relation
次に、変数「posts」を介してモデルクラス名を取得するにはどうすればよいですか。おそらく、model_class_name と呼ばれるメソッドです:
puts posts.model_class_name # => Post
ありがとう :)
ActiveRecord::Relationの #klass 属性は、リレーションが構築されたモデル クラスを返します。
arel = User.where(name: "fred")
arel.klass # User
クラスの名前を取得するには:
arel.klass.name
これは、次のバージョンで動作することが知られています。
あなたの質問に対する最も単純で直接的な答えは次のとおりです。
posts.first.class.name
これは次のように書くことと同じです:
posts.[0].class.name
これを行うことができるのは、クエリが列挙可能な結果を返すためです。(ActiveRecord::Relation は Ruby の Enumerable インターフェイスを実装しています)。
-- スコット