2018-08-01から1ヶ月間の記事一覧
開始時間と終了時間を入力するアプリで、入力の前後関係と最小間隔、最大間隔をチェックしたい場合があります。 チェックを実装するには、Railsではカスタムバリデータとカスタムメソッドの方法があります。開始時間、終了時間をもつアプリは多いので、今回…
前回の記事の続きです。 ★前回の記事 yucatio.hatenablog.com 前回の記事では、validationの軸として 単属性/属性間 子属性の個数 マージ値/DB値/入力値 マスタ情報に値が存在するかのチェックが必要/不要、さらにマスタ情報の値を用いてvalidationが必要/不…
アプリを作成・改修していくうちに、モデルの属性が多くなり、validationも複雑になってきます。既存の項目と同時に設定できない項目が追加されたり、また、システムが大きくなってくると、外部のAPIと通信が必要といったケースもあります。 新しく追加した…
RubyMineには文字列が正規表現にマッチするか調べる機能があります。 1. 正規表現にカーソルを移動し、 電球マークまたはoption+エンターキー(windowsの場合はalt+エンターキ)を押す。 2. Check RegExpを選択する 3. Sample:にテストしたい文字列を入力しま…
開始時間(start_time)と終了時間(end_time)を持つテーブル(例: schedule)で、あるレコードXと時間が重複したデータを抽出するSQLは、 SELECT * FROM schedule WHERE start_time < レコードXのend_time AND end_time > レコードXのstart_time です。 しかしst…
Webアプリでvalidationを書いていると、DBに問い合わせをしなければいけない時があるのですが、その時に、値が変更されているかチェックしてからDB問い合わせした方がよいよというお話です。値が変更されているかは、Railsではwill_save_change_to_#{attr_na…
Webアプリでvalidationを書いていると、DBに保存されている値が必要になる場合があります。Railsでは、DBに保存されている値は、#{attr_name}_in_database、保存されている値から変更があったかは、will_save_change_to_#{attr_name}?というメソッドが用意さ…
Webアプリでvalidationを書いていると、値が変更になった時にだけvalidationをかけたい場合があります。Railsではwill_save_change_to_#{attr_name}?というメソッドが用意されています。#{attr_name}の部分はModelの属性(カラム名)で置き換えます。 値が変更…
rubyではtrimじゃなくてstripというそうです。 stripは先頭と末尾の半角空白やタブ、改行などを除去するメソッドです。 全角空白は除去されないので、独自で定義する必要があります。 うまくいく例 class String def strip_all_space! gsub!(/(^[[:space:]]+…
オブジェクト指向とは 『なぜ、あなたの仕事は終わらないのか(中島聡[著])』には以下のように書いてあります。 なんらかの対象(オブジェクト)を先に選択したうえで動作を指定することをオブジェクト指向といいます。 考えてみる Wikipediaでオブジェクト指…