yucatio@システムエンジニア

趣味で作ったものいろいろ

Ruby on Rails

Railsでカスタムバリデータとvalidates_withで2つの日時の前後、最小間隔、最大間隔のチェック

開始時間と終了時間を入力するアプリで、入力の前後関係と最小間隔、最大間隔をチェックしたい場合があります。 チェックを実装するには、Railsではカスタムバリデータとカスタムメソッドの方法があります。開始時間、終了時間をもつアプリは多いので、今回…

Railsでvalidation中にDBアクセスする場合は、will_save_change_to_#{attr_name}?を使用する

Webアプリでvalidationを書いていると、DBに問い合わせをしなければいけない時があるのですが、その時に、値が変更されているかチェックしてからDB問い合わせした方がよいよというお話です。値が変更されているかは、Railsではwill_save_change_to_#{attr_na…

Railsで変更前の(DBに保存されている)値を利用してvaldiateする

Webアプリでvalidationを書いていると、DBに保存されている値が必要になる場合があります。Railsでは、DBに保存されている値は、#{attr_name}_in_database、保存されている値から変更があったかは、will_save_change_to_#{attr_name}?というメソッドが用意さ…

Railsのwill_save_change_toで値が変更されているか調べてvaldiateする

Webアプリでvalidationを書いていると、値が変更になった時にだけvalidationをかけたい場合があります。Railsではwill_save_change_to_#{attr_name}?というメソッドが用意されています。#{attr_name}の部分はModelの属性(カラム名)で置き換えます。 値が変更…

リソースにfirstとかlastとかtodayでアクセスしたい場合のリンクパスの生成方法 (Ruby on Rails)

railsでリンクパスを作成するときに、 events/123/tickets/1 のようにIDを指定するのではなく、 events/123/tickets/last のlastように、 リソースパスに文字列を指定する方法。 うまくいく方法 シンボルを渡せばよいだけでした。 event_ticket_path(@event,…

Railsでajax通信時にattribute名とfull_messageの組み合わせでレスポンスを返す

ajaxでの非同期通信時に、attributeごとのメッセージを表示するのに手間取ったので記録しておきます。 ajax通信でない時は、errors.full_messages_for(:attribute_name)で各attributeのエラーメッセージは取得できます。 やりたいこと ajax通信時に、入力エ…

Railsのインストール

Rubyのバージョンアップ、bundlerのインストールも終わったのでRailsのインストールをします。 インストールするRailsのバージョン決定 参考にしている" パーフェクトRuby on Rails" では、Rubyのバージョン2.1.2とRailsバージョン4.1.1を利用していますがな…