質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

2回答

1911閲覧

Rails コンソール(pry)でModel.allすると、そのモデルにあるカラム名と同名のメソッドが実行される

xaxaxaxa

総合スコア8

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/09/08 11:43

編集2017/09/12 06:26

こんにちは
件名のような症状が起き、困っております(・・;)

以下のようなモデルがあるとします

Userテーブル

  • name:string
  • age:integer

ruby

1class User < ActiveRecord::Base 2 def name 3 puts "hoge" 4 end 5end

コンソールから
User.allをします。

すると、Userテーブルに5件ユーザがいた場合、

User Load (11.1ms) SELECT `users`.* FROM `users` hoge hoge hoge hoge hoge => [#<User:0x000ff3....

となり、なぜかカラム名の存在するメソッド名のメソッドが逐一実行されます

実際の動作には問題ないのですが、開発でコンソールを使うときに非常に困っておりますm(__)m

ちなみに、開発メンバーで私だけで、
同じgem,rails,rubyバージョンで、branch(作業ファイル)も同じです。
database.yml系も確認しました。

今日突然発症し、マックを再起動しても問題は継続します。
他のリポジトリでは発生しません(rubyバージョン等が違いますが。。)

環境は以下のとおりです
ruby 2.3.0
rails 4.2.6
pry (0.10.3)
pry-alias (0.0.1)
pry-byebug (3.3.0)
pry-doc (0.8.0)
pry-rails (0.3.4)

どなたかアドバイスいただけないでしょうかm(__)m
よろしくお願いいたします。

追加

一旦新しくcloneし直したのですが、同様でした(´・ω・`)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

そもそも、どうしてこのようなUser#nameのメソッド定義をしたのでしょうか。

name:stringなテーブルのモデルである以上、nameメソッドはモデルの値の取得用メソッドとして存在します。そこを自前のメソッドで上書きしてしまうと、nameの値が取れないモデルになってしまいます。

投稿2017/09/08 13:24

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xaxaxaxa

2017/09/11 01:05

ありがとうございます。 理由があって、カラムがNULLのときに情報をセットするラッパー用のメソッドが必要でした。 私が参加した時には既にあったコードなので、更に詳しい理由はわかりません。 そして、なぜ私だけこのメソッドがコンソールでSELECTしただけで実行されるのかが謎になっております。 よろしくお願いいたします。
guest

0

Gemfile

1pry (0.10.3) 2pry-alias (0.0.1) 3pry-byebug (3.3.0) 4pry-doc (0.8.0) 5pry-rails (0.3.4)

ここらへんのgemは使用したことがないので詳しいことはわかりませんが、Railsが参照しているgemのディレクトリが他の開発者さんと違うことによって質問者さんだけに起こってしまっているということはないですか?

今日突然発症し、マックを再起動しても問題は継続します。

とのことですが突然発症する前にbundle installやbundle update等のコマンドを実行した覚えがあれば
そこが怪しいかもしれないですね

投稿2017/09/21 13:07

y_y3

総合スコア179

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xaxaxaxa

2017/09/25 02:55

ありがとうございます。 ディレクトリは違いますが、他メンバーと同じくほとんどルート直下になります。 Bundle系のは操作はしてなかったはずですが、もう一度確認してみます。ありがとうございます。m(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問