技術

ActiveRecord::Relationのklassメソッドでmodelを取得できる。

投稿日:

こんにちは。コーテッグのこやまです。

モデルに対してallやwhereメソッドを使って返ってくるのは、
ActiveRecord::Relationのインスタンスですが、
元クラスを取得したいときってありますよね。

RailsのActiveRecord::Relationでは
.classではclassを取得できます。
.klassでmodelを取得できます。
.modelでもmodelを取得できます。

自分でも何言っているかわからないのでコードを見てみましょう。

hoges = Hoge.where(id: [1..10])

// .class(Objectクラスのインスタンスメソッド)
hoges.class
=> Hoge::ActiveRecord_Relation


// .klass(Active Record RelationのAttributes)
hoges.klass
=> Hoge(id: integer, fuga_id: integer, .....)
Returns the class of the target. belongs_to polymorphic overrides this to look at the polymorphic_type field on the owner.


// .model(Active Record RelationのAttributes)
hoges.model
=> Hoge(id: integer, fuga_id: integer, .....)

ということでした。.classはRubyで.klassはRailsって感じですかね。
私は普段は.modelを使っています。

-技術

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

[Angular] @NgModuleをざっくりと

どうも中田です。 最近社内でAngularの波が起こってるので そのビッグウェー …

Amazon Rekognitionを使うと写真に自動でタグを付けられます。

こんにちは、高石です。 来月20日(5月20日)はエンたまもくもく会#5です。 …

no image

【ionic】Cannot read property ‘startTrackerWithId’ of undefined だとよ

どうも中田です。 GoogleAnalyticsプラグインを導入したのですが、A …

no image

【Angular6】画像を拡大したり、ドラッグ移動をできるようにする

こんにちは 画像を拡大したり、ドラッグ移動したい時は結構あるんじゃないでしょうか …

どうも中田です。 Let’s Encryptって無料だし便利ですよね …