技術

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

Dockerでwheneverが動かない (bundler: failed to load command: bin/rails (bin/rails))

どうも中田です。 久々の投稿になります。 正確にはwheneverで登録したcr …

no image

[wordpress]パーミションを変えたらHTTP500(Internal Server Error)

こんばんは Kusanagiにインストールしたwordpressの管理画面からフ …

no image

ボタンを押した時にEdgeだけ500エラーになる

こんにちは!コーテッグのこやまです。 フロントをAngular、サーバーサイドを …

no image

[JavaScript]IEのif文の判定がchromeと違う?

こんにちは、コーテッグのこやまです。 今持っている案件で、IE対応を進めているの …

no image

【Rails】kaminariさんって配列もいけるんですね

どうも中田です。 久しぶりのブログになります。 railsでページングをする場合 …