タグ

ブックマーク / www.tamurasouko.com (2)

  • Rails – 親子テーブルを一度に更新する方法 | 株式会社田村倉庫

    上記のような一画面に基情報(宛先、住所)と複数の明細情報(物品名、数量)がある画面で入力された情報を親子関係にある基テーブル(発送テーブル)と明細テーブル(物品テーブル)に同時に登録したい場合が業務アプリではけっこうあると思います。 Railsではこのようなケースに簡単に対応するための便利機能が用意されています。具体的にはモデルでaccepts_nested_attributes_forという設定を、ビューでfield_forメソッドを利用します。この機能を利用すると以下の2つメリットがあるので是非活用することをオススメします。 ソースコードが短くてすむ ⇒ 後述しますが、特にコントローラー側の記述量は激減します。 明細データへのバリデーション結果が画面にキレイに表示できる ⇒ 親子関係をRailsに認識させることで明細データのバリデーション結果を表示するロジックを個別に実装する必要が

    Rails – 親子テーブルを一度に更新する方法 | 株式会社田村倉庫
  • Rails – テーブルなしのモデルを利用する方法 | 株式会社田村倉庫

    RailsではモデルとDBのテーブルが1対1の関係になっていることが多いですが、対応するテーブルはないけどモデルを利用したい、というシーンがあると思います。 特に画面の入力内容が1つのテーブルに対応していない場合によく使われるとおもいます。例えば、CSVファイルの内容をインポートして各テーブルにデータを登録する場合のファイルアップロード画面用でテーブルなしモデルを使うと便利です。 このメモではこの「テーブルなしモデル」する方法を紹介します。 なぜ「テーブルなしモデル」を使うか テーブルなしモデルを利用することで以下の3つのメリットが得られると思います。 ActiveModelの強力なバリデーション機能を使える ⇒ 自分でバリデーションロジックを書かなくて済みます 他のソースコードとの統一性が保てる ⇒ 入力をモデル化することでform_forなどのメソッドが使えるため、テーブルありの場合の

  • 1