保存しようとしていたモデルには普通に「type」という属性を定義していたのですが、『「type」属性は保護されているので値を設定できませんよ』とのこと。保護した覚えはないのに。 どうしてだろうと不思議に思ったので調べてみると、どうやらこの「type」属性は、Railsの「単一テーブル継承(Single Table Inheritance)」という機能で使われる特殊な属性だそう。つまり予約語。 「単一テーブル継承」は、継承関係にある複数のモデルのデータを、一つのテーブルで管理するための機能。テーブルに保存されているデータがどのモデルに対応しているのかを管理するために、この「type」属性が使われます。 今回僕は、通常の属性として「type」属性を定義(つまりテーブルに「type」カラムを追加)していたのですが、単一テーブル継承が使う「type」属性とバッティングしちゃって例外が発生したみたい
こんな風になってるはず。 どのページでも共通に読み込みたい JavaScript が以下の二つだった場合。 app/assets/javascripts/hogehoge/fugafuga.js app/assets/javascripts/areare/korekore.js.erb //= require_tree . を削除してこんな風に修正します。
Railsで実際にFormオブジェクトを作ってみたらいくつか気をつけるポイントがあったので紹介します。 ActiveRecord / Rails / Ruby この記事はRuby on Rails Advent Calendar 2014の2日目です。 1日目は@miyukkiさんの「結局Ruby on RailsとPHPってどっちが優れてるの?」でした。おつかれさまでした。 Formオブジェクトとは Formオブジェクトはその名の通り入力フォーム用のオブジェクトです。 フォームとモデルがうまく対応しているときはActiveRecordをそのまま使えば良いのですが、 複数モデルを作りたかったりモデルとは違うValidationを行いたかったりする場合にはFormオブジェクトを使うと便利です。 Formオブジェクトのサンプルコードはこんな感じになります。 class Blog::SiteFo
概要 Bootstrap を使うと見た目がかなりキレイになりますが、まだまだイケてない部分があります。 例えば、Forms の File input。 汚い!!!せっかくその他のボタン等は綺麗なのに、もったいないですね。 そこで、少しでも見た目が Cool になるように改善したい思います。 今回は Bootstrap File Input というライブラリを導入してみました。 そして、このライブラリを利用して、実際に CSV ファイルをアップロードするための form を作ってみたいと思います。 お断り 本当は Bootstrap File Input を使うと、 例えば画像ファイルを選択した際にとても Cool なプレビューが表示されたりするのですが、 今回は CSV ファイルをアップロードするという用途に限定したいと思います。 気になる方は公式の デモ をご覧ください。 Bootstr
平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識
gem を使わずに Rails でアプリ固有の設定情報や定数をグローバルに定義するには、app/config/initializers ディレクトリ以下に、設定用のファイルを作成するのが一般的なようです。また、development, test, production など環境で使う値を変更する場合は、設定用の yaml ファイルを作成すると、ruby コード側で Rails.env.production? で判定してやる必要がなくなり楽ができます。 — 環境 — rails-4.0.1 例えば、外部ウェブサービスの Web API を利用する際に、development 環境と production 環境で API key を使い分ける場合など。 【追記 2014/07/11】 Rails4.1からデフォルトで config/secrets.yml というファイルが用意されており、アプリ
密結合な親子構造を作るには Railsでは通常、親子構造で双方向にリンクをはるには、has_many(またはhas_one)とbelongs_toを使います。しかし、このように作られた構造では、親のオブジェクトと、その子オブジェクトからたどった親オブジェクトは、オブジェクトとしては別物になります。 1回のリクエストの間に、親オブジェクトの子を取得し、かつ、子オブジェクトから親を取得するというケースはあまり多くありませんが、例えば、兄弟オブジェクトを辿って計算したいという場合は、このようなActiveRecordを素直に使った親子構造では、コストが大きくなってしまいます。つまり、親からある子を得るのに1回検索し、子から親を得るのに1回検索し、その親からまた子を得るのに1回検索します。これを兄弟を辿る回数繰り返すのはかなりの無駄になります。また、検索時にincludeオプションを使ってもうまく
Railsのコントローラーでのrenderメソッドの使い方について説明します。 renderメソッドは、「コントローラー(Controller)」と「ビュー(View)」のそれぞれにあります。 ここではコントローラーのrenderメソッドの使い方を示します。 ビューでのrenderメソッドの使い方は こちらを参照してください。 動作確認 Rails 4.1 目次 1. ビューを表示する 1.1. 暗黙的なビューの表示する 1.2. 他のアクションのビューを表示する(actionオプション) 1.3. 他のコントローラーのビューを表示する(templateオプション) 2. JSONを返す 2.1. renderメソッド 2.2. jbuilder 2.3. ActiveModelSerializer 3. ビュー以外を表示する 3.1. 文字列を表示する(textオプション) 3.2. X
WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 「今週の話題」を除くと、すごく久しぶりの投稿になってしまいました。いろいろあってなかなか時間が取れなかったのですが、やっと復活できそうです。ネタはだいぶ溜まっているので、頑張って書いていこうと思います。 さて、本日ご紹介するのは Rails アプリケーションで配列構造のデータを扱うフォームに役立つ Tips です。 Rails は特殊な name 属性を指定するこ
I have a model that has an attribute that is an Array. What's the proper way for me to populate that attribute from a form submission? I know having a form input with a field whose name includes brackets creates a hash from the input. Should I just be taking that and stepping through it in the controller to massage it into an array? Example to make it less abstract: class Article serialize :links,
はじめに 自分が rails をさわり始めたときはバージョン1からバージョン2に変わるあたりだったのですが、バージョン2が出た年を振り返るとなんと2007年でした。 月日の流れが速い事に驚く中、早く知ってたら良かったのになぁって事をつらつらとまとめてみました。 最近 rails さわり始めてみたよ!って方の参考になれば良いなと思います。 今回は便利な gem とかではなく、素のrailsで出来ることを挙げています。 ちなみにバージョンは以下の環境です。 About your application's environment Ruby version 2.1.3-p242 (x86_64-darwin14.0) RubyGems version 2.2.2 Rack version 1.5 Rails version 4.1.8
railsのflashについて、よく忘れるのでメモ。 ※ここで言うflashは、Macromedia Flashとは全く関係ない。Railsのセッションを利用した機能のflashについて。 flash とは? ログイン時のウェルカムメッセージや、項目追加の成功通知など、ユーザに簡単な通知を行いたい時に利用する。 コントローラでflashメッセージを設定し、ビューで表示する。 flashは全体で見ればHash。あるキーに対する値としてメッセージを設定する。キーは自由に設定できるが、デフォルトとしてalertとnoticeがある。 設定したメッセージは、sessionに保存される。つまり、flashは、sessionを利用した機能の1つ。 普通のセッション変数では破棄するまで値は保持されるが、flash の場合は一度表示されるとアクション終了時に自動的に消去される。 使い方 コントローラで定義
このエントリは Ruby on Rails Advent Calendar 2014 の 7 日目のエントリです。 前日は seri_k さんの「Turbolinksさんと上手く付き合う10の方法」でした。 お詫び WIP です。公開期限に間に合わない可能性があるため、まだ途中ですが先に公開してしまいました。 サンプルコード等を後ほど追記する予定です。 → 12/08 18:10 追記しました。 Rails のファットモデル問題 Rails で構築したアプリケーションが大規模になり機能が増えていくにつれてモデルが大きくなり、そのうち手がつけられなくなる問題は古くから指摘されています。これについてはもはや詳細を述べるまでもないと思うので割愛しますが、この問題は 2014 年になった今でも多くの開発チームを悩ませていると感じています*1。 このエントリでは、普段 Rails を業務で使いながら
こんにちは、鈴木です。 Rails4 の新機能である Strong Parameters を試してみました。 ※2013/10/03 TECHSCORE 本体の記事になりました!「StrongParameters | TECHSCORE(テックスコア)」 Strong Parameters は個別の Gem ライブラリでしたが、Rails4 のコア機能として取り込まれました。 Strong Parameters を使用すると、ホワイトリスト形式でリクエストパラメータを検証することができます。 Rails3 では Mass-assignment (モデルの複数属性への一括代入)を防ぐために attr_accessible を使用していましたが、Rails4 からは Strong Parameters を用いて Mass-assignment に対応することができます。 Strong Para
Railsのモデルのバリデーションエラーの扱い方について説明します。 errors(エラーメッセージオブジェクト)、独自のエラーメッセージの追加、エラーメッセージの表示、日本語化について説明します。 動作確認 Rails 4.1 目次 モデル(model)のエラーメッセージ errors の使い方 モデル(model)にエラーメッセージを追加 ビューにモデルのバリデーションエラーを表示 モデルのバリデーションエラーメッセージを日本語化 モデル(model)のエラーメッセージ errors の使い方Railsのモデル(model)でバリデーションエラーが発生した場合に、model の errorsにエラーメッセージが設定されます。さらに、full_messagesでバリデーションのエラーメッセージの配列を取得できます。 次のProductモデルが設定されている前提で話を進めます。 # app
4 ways to early return from a rails controller … and check why 5600+ Rails engineers read also this 4 ways to early return from a rails controller When refactoring rails controllers you can stumble upon one gottcha. It’s hard to easily extract code into methods when it escapes flow from the controller method (usually after redirecting and sometimes after rendering). Here is an example: 1. redirect
Railsのマイグレーションファイルを既存のスキーマ、データベースを元に作成 開発中に増えすぎたマイグレーションを削除して、既存のスキーマあるいはデータベースから全てのテーブルを作成するクリーンなマイグレーションを作成する手順。 ■スキーマをデータベースに反映 schema.rbを正とする場合はschema.rbの内容をデータベースに反映しておく。 既存のデータベースを正としたい場合は行ってはいけない。rake db:schema:load ■既存のデータベースからスキーマファイルを生成 schema.rbの内容に関わらず、現在の開発用データベースのスキーマがschema.rbとして保存される。rake db:schema:dump ■マイグレーションファイルの作成 作成されたschema.rbの内容をマイグレーションファイルとして保存し、マイグレーションする。rails g migrat
Virtual Attributesとは、モデルのDBに存在しない仮想的な属性のことです。 モデルにVirtual Attributesを追加することで、DBを変更しないでフォームを変更することができるようになります。 言葉ではいまいち分かりづらいので、次のような、「名前」の入力フィールドと「グループ」のセレクトボックスがある画面を、 Virtual Attributesを使って、DBのカラムを変更しないで、「名前」が「苗字」と「氏名」に分かれ、グループを追加する入力フィールドを追加できます。 Virtual Attributesの使いどころとして、DBをマイグレートするのが大変、その他なんらかの理由によりDBをいじれない場合に、モデルにVirtual Attributesを追加することでフォームの内容を変更することが可能です。 もちろん、バリデーションも行えます。 動作確認 Rails
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く