今回はバリデーションまわりの勉強。代表的なバリデーションについて以下にまとめてみた。
必須項目チェック
まずは一番基本、必須項目チェック。必須項目の場合は「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で簡単なアプリケーションをつくっていく中で追々書いていきたい。
前回に引き続き。今回は簡単な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など別ファイルに記述するような感じで良いかも。
(続きを読む…)
最近ようやく少しずつRailsに乗りこなせるになってきたので、ちょっと整理がてらリソースベースのルーティングやらマイグレーションやらの整理をしてみる。
つくるもの
シードデータやらルーティングやらマイグレーションやらいじりつつブログ記事っぽい感じで DBからの簡単な読み出し。それだけ。「Scaffoldでやれば」って話だけど、根幹の仕組みは知っておきたいので。
データの用意
何はともあれmodelの作成。コンソール上で以下のコマンド。
rails g model article
マイグレーション用のスクリプトができたはずなので、db/migrate に移動し スクリプトを編集。
class CreateArticles < 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のコードをいじっていた時にふと「そういえば文字がぷるぷるするサイトってあんまり無いよなー」と思った(最も、文字をぷるぷるさせた所で、サイトのユーザにとっては単なるストレスでしか無いけど)。
それにしてもそういうjQueryプラグインが一つぐらいあっても良さそうだなと思って調べたものの、それらしきものが見当たらなかった。文字に魅力的なエフェクトを加えたりするプラグインならあるんだけど、誰もぷるぷるさせようとは思わないみたいだ。
というわけで、せっかくの休日だし つくってみた。
使い方は簡単、以下ようにjQueryオブジェクトにメソッドを追加するだけ。
$( some_element ).rhythm();
$( some_element ).rhythm(200); // 200ms間隔でぷるぷるする。
地味にメソッドチェーンもできるようにしています。
$( some_element ).rhythm().html("Foo");
く、くだらん。。。(´・ω・`)
というわけで今回は「Rhythm.js」の紹介でした。良い休日を。