2013年08月20日10:29 Ruby いまさら聞けない!? accepts_nested_attributes_forの使い方 Railsのaccepts_nested_attributes_forを使い方を簡単に。 例えばBlogとArticleで1対多の関係の場合、Blogの作成時にArticleもまとめて作ろうとするときってありますよね。そういうときの話です。 まず、モデルでaccepts_nested_attributes_forを宣言し、 class Blog < ActiveRecord::Base has_many :articles accepts_nested_attributes_for :articles # これ! end class Article < ActiveRecord::Base belongs_to :blog end コントローラでは事前にAr
こんにちは、鈴木です。 先日、Rails 4.1.0.rc1 がリリースされました。 リリースノートをパラパラを見ていたら ActiveRecord enums という新機能があったので試してみました。 ActiveRecord enums とは 会員のデータを保持する users テーブルを作成して、会員ステータスを保持する status カラムを用意して、その値が 0 なら仮登録、1 なら本登録、2 なら退会済みにしよう、・・・ということって良くありますよね? ActiveRecord enums は、モデルクラスでこんな風に使います。 class User < ActiveRecord::Base # ステータス: temporary (仮登録), active (本登録), resign (退会). enum status: %i(temporary active resign)
1.0.0 1.1.0 1.1.1 1.1.6 1.2.0 1.2.6 2.0.0 2.0.1 2.0.3 2.1.0 2.2.1 2.3.2 2.3.8 3.0.0 3.0.5 3.0.7 3.0.9 3.1.0 3.2.3 3.2.8 3.2.13 4.0.0 4.1.0 4.2.1 説明 検索条件を指定して初めの1件を取得し、1件もなければ作成する 使い方 モデル.find_or_create_by(条件) 例 # Find the first user named Penélope or create a new one. User.find_or_create_by(first_name: 'Penélope') # => <User id: 1, first_name: 'Penélope', last_name: nil> # Find the first user name
ハッシュじゃないのにあたかもハッシュのような書き方になっています Rails 4 では、 ActionController::Parameters の親クラスの親クラスがHashです。 つまり、ハッシュと継承関係にあるのでハッシュと同じように振る舞います。 # ActionController::Parameters class Parameters < ActiveSupport::HashWithIndifferentAccess # ActiveSupport::HashWithIndifferentAccess class HashWithIndifferentAccess < Hash これってjsの言うところの「array like object」的なものなのでしょうか? "array like object"という用語が初耳だったので、こちらのページを読んでみました。 htt
はじめに 本記事では、basic認証を使用しているページをスクレイピングするときにbasic認証を扱う方法を示しています。 さらに、ログインフォームからログインしなければページにアクセスできない場合を想定して、テキストフィールドを扱う方法も示しています。 流れ ・add_authでBasic認証を扱う ・ログインフォーム内のテキストに文字を入力し、ログインボタンを押す ・トップページのHTMLを取得する add_auth mechanizeでbasic認証を扱うには、add_auth()を使用します。 第一引数→basic認証の対象のURL 第二引数→basic認証に使用するid 第三引数→basic認証に使用するpassword 以下のようにしてbasic認証を使ったページにアクセスします。 なお、ここではbasic認証に使用するidとpasswordを以下のように定義します。 id →
Google+ボタン はてなブックマークボタン 更新日時: 2013年10月03日(木) 作成日時: 2013年10月03日(木) 前の記事 / 次の記事 あるモデルのname列だけ欲しい場合、 Items.pluck :name # 例えば ["Mushroom", "Flower", "Star",] とするとnameだけの配列を取得することができる。 また、id列だけ欲しい場合は、 Items.ids # 例えば [1, 2, 3] とも書ける。 このメソッドの何が一番嬉しいのかというとオブジェクトが生成されないこと。 例えば次のようにした場合、 Items.all.map { |item| item.name } でも得られる配列は同じだけど、 この場合繰り返しの回数だけ Item.new が走ってオブジェクトが生成される。 オブジェクトが生成されないということはそれだけでも充分高
1.0.0 1.1.0 1.1.1 1.1.6 1.2.0 1.2.6 2.0.0 2.0.1 2.0.3 2.1.0 2.2.1 2.3.2 2.3.8 3.0.0 3.0.5 3.0.7 3.0.9 3.1.0 3.2.3 3.2.8 3.2.13 4.0.0 4.1.0 4.2.1 説明 複数のテーブルを結合して検索 使い方 モデル.joins(条件) 例 categoryテーブルにpostテーブルを結合して検索 Category.joins(:posts) # SELECT categories.* FROM categories INNER JOIN posts ON posts.category_id = categories.id 2個のテーブルをjoin Post.joins(:category, :comments) # SELECT posts.* FROM posts
なぜTransactionが必要なのか Transationの目的は、あるいコードブロックにあるSQL文の変更を、全部成功することを守るための存在である。Transactionにより、データの統一性を保ことができる。銀行などの受け入れと引き出しの処理には必要でしょう。二つの処理の中一つが失敗すると、コードブロークにあるSQL処理を全部ロールバックされるのが、Transactionの特徴である。 ActiveRecord::Base.transaction do david.withdrawal(100) mary.deposit(100) end Transationのロールバックが発火条件 Railsでは、ロールバックが発火するには、「例外」が必要である。これがTransactionを使うときのもっとも重要なことである。 例えば、Railsでは #update_attributeは例外を
Rails4.1が正式にリリースされたらしいので少し見てみたけど、secrets.ymlとかいうのがサポートされるようになったんですね。 公開したくないAPIキーなどの情報をconfig/secrets.ymlに書いておくとRails内でアクセスできるのだとか。 こうやって書いておくと # config/secrets.yml development: secret_key_base: cfcc784a39.... hoge_api_key: hogehogehoge こう呼べる。 Rails.application.secrets.hoge_api_key で、このsecrets.ymlをソース管理から外しておけばその他は公開できるよね、みたいな。他のサービスと連携するオープンソースなRailsアプリにするときなんかに使えばいいんだと思います。 Figaroと一緒では 同じことをするため
Flickr: cambodia4kidsorg's Photostream acts-as-taggable-onはタグの追加、削除、関連するオブジェクトの取得、タグクラウドなどのタグを管理するためのgemです。 今回は、Railsでacts-as-taggable-onでタグ管理を行う方法について説明します。 動作確認 Ruby 2.2.0 Rails 4.2.0 acts-as-taggable-on 3.4.4 目次 acts-as-taggable-onのインストール acts-as-taggable-onの基本的な使い方 acts-as-taggable-onを使ってユーザー管理にタグ機能を実装してみる Bootstrap Tags Inputを使ってユーザーのタグ入力を簡易にする 同じタグを保持しているユーザーを表示する 1. acts-as-taggable-onのインスト
asin: B00SF6JN4K title: “acts-as-taggable-onで作るタグクラウド&効率的なタグ管理【Rails 4.2 x Ruby 2.2】” category: Rails 🍮 tags: [Rails, Gem, Ruby]Railsのサービスを作っていて「タグ付けをしたい」と「タグクラウドを作りたい」という場合に使えるGem『mbleigh/acts-as-taggable-on』を紹介します。「タグ付けやカテゴライズで構造化することはSEO的にもいいらしい」ので、もしチャンスがあればぜひトライしてみてください! 15/11/15 13:00 Rails 4.2 x Ruby 2.2で動作確認 mbleigh/acts-as-taggable-on | GitHub
Rails4のproduction環境でのみ、画像が表示されない問題 問題の概要 先日、弊社サービス STORYS.JP をRails3からRails4.0.2にアップデートしました。 Rails4はRails3に比べて、development環境でのページロードにかかる時間が1/10ぐらいになりました。 読み込みに 1500ms ほどかかっていたのが、Rails4にするだけで本番並みの 150ms で返ってくるようになり、本当に非常に快適に開発ができるようになりました。 しかし、便利なものには弊害も多く、様々な問題がおきます。 その中でも、解決に苦しんだ問題が、 これまでは正常に表示されていた画像が、Rails4のproduction環境でのみ表示されない問題 です。 問題の原因 問題の原因は、 app/assets/images 以下に置いてある画像を直接パスを指定して読み込んでいるこ
ActiveRecordで単一テーブル継承(STI:Single Table Inheritance)とポリモーフィック関連という2つの便利なモデルの持ち方?関係性?があるのですが、恥ずかしながらいつも混同してしまいます… 多分頭の中では両方とも「似たモデルをまとめる」みたいなぼんやりした認識してるので混ざってしまっているようで… すごい今更ですが ちょっと自分なりにまとめてみようと思います。 単一テーブル継承(STI:Single Table Inheritance) 同じような機能(メソッド)を持つActiveRecordモデルクラスが2つ存在するので、 継承を使って実装しようとした場合。 例として 「Information」モデルを継承した「Warning」クラスと「Notice」クラスを作成するとします。 (例としておかしかったらごめんなさい…) 単純に実装すると、各モデルに対しD
RubyのブロックとかProc.newとかがいまいち分かってなかったので調べてみました。 文法上の説明 まずは次のブロックを使った基本的なプログラムを文法的に説明します。 [1,2,3]はArrayクラスのインスタンスオブジェクトです。 .eachはArrayクラスのインスタンスメソッドです。 do~endはブロックで、メソッドはブロックを受け取ることができます。ただしブロックは引数ではないので、ブロックをカッコで囲むとsyntax errorになりますので注意してください。 |i|はブロックの変数(ブロックパラメータ)です。 ブロックの書き換え ブロックはdo~endでも{~}でもどちらでも書くことができます。一般的に1行で書く場合は{~}を、複数行にわたる場合はdo~endで書きます。最初の例は、以下のように書き換え可能です。
※追記: fields_forにかんして、新しくこちらの記事にまとめたので是非一緒に参照してください。 form_tagとform_forの使い分け Railsにおけるformを理解するために、最初に理解すべきなのがこの違いです。 Railsのform_for/form_tagの分け方の意図としては、 form_for: 任意のmodelに基づいたformを作るときに使う form_tag: modelに基づかないformを作るときに使う ということです。 つまり、あるuserモデルに基づいたuserを作成するときはform_forを使い、 そうではなく、検索窓のような何のモデルにも基づかないformを作りたいときはform_tagを使うのが原則です。 具体的に何が違って、その用途はどう分かれているのか。 結論としてform_forはモデルオブジェクト扱う上で便利 post先のurlは不要
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く