【Ruby on Rails】バリデーションについて【学習記録3】

2013.10.19

今回はバリデーションまわりの勉強。代表的なバリデーションについて以下にまとめてみた。

必須項目チェック

まずは一番基本、必須項目チェック。必須項目の場合は「presence」という属性を「true」にしてあげる。


validates :column, presence: true

create時のみ、もしくはupdate時のみ必須にしたい場合は以下のように記述する。


validates :column, presence: { on: :create } # create時のみ必須

validates :column, presence: { on: :update } #update時のみ必須

長さチェック

長さチェックの場合は length を使用。最小の場合は minimum, 最大の場合は maximum を設定。


validates :column, length: { minimum: 10, maximum: 50 } # 10 ~ 50 文字

空欄の場合はチェックを行わない…というようにしたい場合は「allow_blank」属性に true を指定。


validates :column, length: { minimum: 10, allow_blank: true }

正規表現

正規表現でのバリデーションをかける場合は format を使用する。


validates :column, format: { with: /正規表現/, message: "エラーの時の文言" }

範囲

範囲を指定する場合は inclusion を使用し、以下のように 「in」に範囲オブジェクトを渡す。


validates :column, inclusion: { in: (0..100) } # 1 ~ 100の範囲内かどうか

チェックされているかどうか

これは「利用規約に同意」とかで結構使いそうな感じ。これには「acceptance」を使用。


validates :column, acceptance: true # チェックがついていればOK

他にも色々あるけれど、所感としてよく使うのは上に挙げたものかな。

上記に挙げたもの以外のバリデーションについては 実際にRailsで簡単なアプリケーションをつくっていく中で追々書いていきたい。

【Ruby on Rails】簡単なCRUDを書いてみる【学習記録2】

2013.10.17

前回に引き続き。今回は簡単なCRUDメインで。
(そして前回に引き続き「Scaffoldでやれば」って話だけど やっぱり便利なツール使う上で根幹の事はしっかり理解していたいので)

記事の新規登録

articlesコントローラのnewアクション、createアクションをいじる。

def new
  @article = Article.new
end

def create
  @article = Article.new(params[:article])
  if @article.save
    redirect_to @article, notice: "記事を登録しました。"
  else
    render "new"
  end
end

noticeに関してはapplication.html.erbで flash.notice を記述する。
続いてView部分。new.html.erb を用意し、以下のように記述。

<% @page_title = "記事の投稿" %>
<h2><%= @page_title %></h2>

<%= render "articles/form" %>

更新の際にもフォームを使い回せるようにフォーム入力部分のテンプレート _form.html.erb を用意し、レンダリング。_form.html.erbのコードは以下のように記述した。

<%= form_for @article do |form| %>
<table>
<tr>
<th><%= form.label :title %></th>
<td><%= form.text_field :title, size: 50 %></td>
</tr>
<tr>
<th><%= form.label :body %></th>
<td><%= form.text_area :body, rows: 15, cols: 50 %></td>
</tr>
<tr>
<th><%= form.label :expired_at %></th>
<td><%= form.date_select :expired_at, start_year: 1990, end_year: 2030, use_month_numbers: true %></td>
</tr>
</table>
<%= form.submit %>
<% end %>

各属性の名称は i18nあたりをbundle installして ja.ymlなど別ファイルに記述するような感じで良いかも。

(続きを読む…)

【Ruby on Rails】ルーティング、マイグレーション云々【学習記録1】

2013.10.15

最近ようやく少しずつRailsに乗りこなせるになってきたので、ちょっと整理がてらリソースベースのルーティングやらマイグレーションやらの整理をしてみる。

つくるもの

シードデータやらルーティングやらマイグレーションやらいじりつつブログ記事っぽい感じで DBからの簡単な読み出し。それだけ。「Scaffoldでやれば」って話だけど、根幹の仕組みは知っておきたいので。

データの用意

何はともあれmodelの作成。コンソール上で以下のコマンド。


rails g model article

マイグレーション用のスクリプトができたはずなので、db/migrate に移動し スクリプトを編集。


class CreateArticles &lt; ActiveRecord::Migration
  def change
    create_table :articles do |t|
      t.text :title
      t.text :body
      t.date :created_at
      t.date :expired_at
      t.boolean :is_public
      t.timestamps
    end
  end
end

マイグレーションの実行。
(続きを読む…)

文字をぷるぷるさせるjQueryプラグイン Rhythm.js

2013.9.21

jQueryのコードをいじっていた時にふと「そういえば文字がぷるぷるするサイトってあんまり無いよなー」と思った(最も、文字をぷるぷるさせた所で、サイトのユーザにとっては単なるストレスでしか無いけど)。

それにしてもそういうjQueryプラグインが一つぐらいあっても良さそうだなと思って調べたものの、それらしきものが見当たらなかった。文字に魅力的なエフェクトを加えたりするプラグインならあるんだけど、誰もぷるぷるさせようとは思わないみたいだ。

というわけで、せっかくの休日だし つくってみた。

 

Rhythm.js

Rhythm.js

 

使い方は簡単、以下ようにjQueryオブジェクトにメソッドを追加するだけ。

$( some_element ).rhythm();
$( some_element ).rhythm(200); // 200ms間隔でぷるぷるする。

地味にメソッドチェーンもできるようにしています。

$( some_element ).rhythm().html("Foo");

 

く、くだらん。。。(´・ω・`)

というわけで今回は「Rhythm.js」の紹介でした。良い休日を。