忘れたときはここを見ろ。この広告は、90日以上更新していないブログに表示しています。その2RoR前回のままでは実用的ではないので、ストロングパラメーターとバリデーション、そしてi18nについて記しておく。参考:matthew.hatenadiary.jpストロングパラメーターストロングパラメーターの振る舞いについては次の記事が詳しいので見て欲しい。参考(詳細に解説している):www.transnet.ne.jpようするに、エンティティクラス/オブジェクトの属性と同名のキーを持つパラメーターのうち指定のパラメーターが受け渡されたかをチェックする。その後にパラメーターで構築したハッシュを返すので、エンティティオブジェクトを生成や属性の更新が容易に行えるコードが書ける。前回のようにテーブル属性は二つあるが、入力フィールドが一つの場合、nameの代わりにname_formを使って二つ分の入力がされる一つのフィールドのパラメーター構造のチェックをしたい場合は、単純にそのシンボルとパラメーター名に変更するだけでよい。end本当はGitHub上のRoRソースを追いかけてその構造と挙動を掴んでおきたいところだが、後日にする。GitHubバリデーションとエラー処理バリデーション機能のインクルードと定義DBテーブルと直結するモデルに情報を渡す前にフォーム専用のモデルでもバリデーションを行い、エラー処理をしたい。これは簡単に実装することが可能である。ActiveModel::Validationsをインクロードした後に、一般のモデルと同様にvalidatesを定義しておけばよい。任意のタイミングでバリデーションを実行すればよい。}エラー処理パラメーターに異常、またはDBテーブルと直結するモデルにエラーが出ればコントローラーでエラー対応しなくてはならないが、フォーム用に作ったモデルオブジェクトとそのモデルとはコントローラーで手短に処理できるほどの関連が設定されていないので、エラー処理は少し考慮して書かないといけない。end上記のプログラムでは、scaffoldで生成された部分をコメントアウトして残しておき、その直下に改造コードを挿入している。フォーム専用のオブジェクトでバリデーション実行してから、本来のモデルでDBへの保存動作を行い、自動的にバリデーション動作をさせている。その際にエラーがあればフォーム専用のオブジェクトのエラーメッセージ用インスタンス変数にその内容をコピーして表示させている。JSON出力に関してはテストを行っていない。end更新処理の場合は、新規作成より一段処理が少なくて済む。i18ninternationalizationの略だが、ここでは日本語化を指す。scaffoldなどで生成したコントローラーのよにshowメソッドでparams[:id]から意図するオブジェクトが得られる場合に限る。例によって前に書いておいたものは残している。その他ソースを載せようと思ったが、もうちょっと他に色々試してみてからgithubに置いておくことにする。»プロフィールid:Matthew忘れたときはここを見ろ。(1)リンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!Matthewさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。