2016-03-01から1ヶ月間の記事一覧

includeとextendの違い

内容を見ていると同じに見えてしまう。 includeとextendの動きを見てみます。 両者の違い クラスのインスタンスメソッドとして取り込むことができる(include) そのオブジェクトにだけ特定の振る舞いを与えることができる(extend) ソースコードで試してみ…

privateメソッドの役割

呼び出し制限をかける場合に、privateメソッドを使っていました。 しかし、曖昧なまま使っており、privateメソッドの正しい役割を知りませんでした。 メソッドの役割 レシーバを省略する形でしか呼び出せない 具体例を出します class Greet def hello puts '…

rubyメソッドの感嘆符の慣習

最近パーフェクトrubyを読んでいます。 自分の中で、新しい気づきが多いので、備忘録として書いています。 rubyの使われ方 感嘆符をつける意味は、注意を促すときに使用される傾向があります。 今回の例では、reverseメソッドで説明します。 reverse は自身…

ruby ||= の意味

自分の備忘録も兼ねて書きます。 railsではよく||=をよく見かけます。 訳すと、「あるいはか、代入する」という意味です。 自分はこれを理解するのに大分時間がかかりました。 何回見ても直感的に分からなかったです。 railstutorialにも概要が載っているの…

rubyのメソッド疑問府の利点

自分の備忘録として書きます。 rubyでは疑問符でメソッドを作成することができます。 他の言語で疑問符を使うのは、三項演算子の時だけ使えます。(違ったら教えてください) 他の言語で疑問符を使うのは、三項演算子で使うのが一般的です。(Schemaは疑問符…

railsで毎回データベースに問い合わせる判定処理を書いてしまったとき、データベースにpluckで一覧データを作成しよう

1つのSQLの発行をなくすと、5ms早くなります(自分の運営サイト) それが一覧ページだと20回以上発行されていて、無駄に重くなっていたのですが、解決しました。 毎回1SQLが発行されると処理が重くなるのは、前回の記事を見て頂いたら、わかるかと思います。…

railsの親モデルから子モデルへのcountをするのは、counter_cacheを使ってみよう

サイトのパフォーマンスをチェックしていたら、おぞましいSQLの発行が行われており、サイトが重くなっていました。 これは気持ち悪いですね。 こんな大量にSQLが発行されていたら、表示速度が無駄に遅くなります。 では、話を今回のモデルの概要です。 Post …

railsのモデルにorderの処理を記述する

コントローラーにorder(created_at: :desc)が多くなると、すごく可読性が悪くなるなって感じました。 よく、こういう感じなことが起こると思います。 @user = current_user @posts = @user.posts.order(created_at: :desc).page(params[:page]) ここからさら…

jsファイルもi18n対応しよう

i18nにはまりました。 ソースコードに日本語がなくなること 同じ項目内容が一括変換できるようになる 変数対応もできる slimを使っているとよく|を乱用していたので、うまく使うことで乱用しなくても済みます。 さて、今回はjsファイルもi18nにすると、jsの…

i18nでcontrollerのactionと連携させる方法

railsでi18nでメッセージを追加しようと思っていましたが、やり方がわからずに途方に暮れていました。 user_session controllerという場所にcreate methodを作成して、失敗した時にerrorメッセージを出したい場合です。 config/locales/ja.yml ja: user_sess…

railsでclassにactiveを付けるhelperの作成方法

jsを使っていたりする場合、よくここにいるという、表示でclassactiveをつけたりします。 その判別方法をhelperで作成します。 app/helpers/application_helper.rb def active?(controller_name, controller_action) if controller_name == params[:controll…

rails g controllerでディレクトリの階層以下にファイルを作成する方法

userというディレクトリファイル以下にcontrollerを作成する方法 rails g controller user::hoges →create app/controllers/user/hoges_controller.rb どうやってやっているのかわからなかったけど、思ったより簡単に作成できます。

capybaraでbutton・form以外の要素をクリックさせる方法

ボタンは使わないけど、クリックさせて何かのアクションを起こさせるときに使う方法です。 よく、click_on click_buttonを使うと思うのですが、それ以外の場合ですね。 find('#hoge').click このfindで要素を探させて、その要素をクリックさせることができま…

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問の1問目

1日1問ぐらいのペースで解いていきたい。 まず、1問目から普通に難しい・・・ これ、10分で解答せよって書いてあったけど、みんなできるのか? Q.1 10進数で回文 10進数、2進数、8進数のいずれで表示しても回文となる数のうち、10進数の10以上で最小の値を求…

匿名掲示板向けのID作成方法

匿名掲示板を運営しようとした場合、荒らしの問題が考えられます。 抑止策として、次のことが考えられます。 アクセス制限 IPアドレスの開示 書き込みを削除する ただし、今回はこういった方法を取らずに、某掲示板のようにIDを生成すればいいのでは?と思い…

capyabaraで要素が重なった時に、最初のものをクリックする方法

capybaraを使っていると、ボタンをクリックするのに要素が重なったりする時があります。 例えば、こんな感じのエラーですね。 Failure/Error: click_on 'コメント' Capybara::Ambiguous: Ambiguous match, found 3 elements matching link or button "コメン…

has_many :throughの使い方

よく言われるのは、多対多の関係で使うと言うものです。 ということで、多対多のモデル関係で試してみます。 例えば、「ユーザー(User)」が「ブログ(Blog)」を投稿し、ブログの「コメント(Comment)」をつけ、ユーザーに関連する「コメント」を取得する場合で…