QA@IT

そのギモンは、あなただけのもの?

ITエンジニアが日々遭遇する課題やトラブルはたいてい、1人だけが出合うものではありません。QA@ITで質問・回答を共有しませんか?

タグ activerecord で絞り込んだ結果 - 解除 Feed icon

ActiveRecord で、例えば User 1 - * Article なリレーションがあったとします。 Article のユーザーも一緒に取得したい時、 @article = Article.find(params[:id]) @user = @article.user とすれば取れるには取れるんですが、2回SQLが走ってしまいます。これが、複数のリレーションになってくると効率悪いなぁ...

追記(3/3) labochoさんの回答で期待通りの動作になりましたが、さらに調べてみた所 accepts_nested_attributes_for の update_only オプションを true にすることで同じ動作にすることができることを確認しました。 http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/...

class User has_many :bookmarks end class Bookmark belongs_to :user end 「userはbookmarkを5個まで追加できる」という場合にvalidationはどう書くのがきれいでしょうか。 ゆくゆくは 「user#premium?の場合は100個まで保存できる」みたいに拡張していきたい感じです。 bookmarkのどのカラム...

Ruby on RailsのActiveRecordに関する質問です。 例えばGitのリポジトリブラウザを作っているとして、「リポジトリ一覧画面」ではコミットが新しい順にリポジトリを並べたいとします。 これは以下のように書けます: @repositories = Repository. joins(:commits). group("repositories.id"). order("MAX...

git cloneなどして手元に持ってきた初見のRailsアプリから、モデルの関係を抜き出して図にしてくれるようなツールはありますか? いろんなRailsアプリのモデルをざっと一覧してみたい、ということなのですが。 UMLのような立派なものでなくても、ActiveRecordのアソシエーションが分かりやすく把握できるようなものであれば、何でもオッケーです。

ユーザごとに設定情報を保存できるようにしたいという場面はよくあるかと思います。独立したテーブルを作るには大袈裟で、とはいえ1つのカラムに serialize して突っ込むと入力値のチェックや型変換が煩雑になって大変悩ましいのですが、何かクールなソリューションはないものでしょうか。 設定項目は例えばこんなデータです: { timezone: '+0900', show_thumbnail: t...

現在、ActiveRecordを生で(Railsを使わないで)使っているのですが、文字化けが発生してしまいます。 DBはMySQL、OSはUbuntuを使っています。 以下に具体的なソースを書かせていただきます。 # -*- encoding: utf-8 -*- require "active_record" require "./models/talk.rb" ActiveRecord:...

現在ActiveRecordの2つのmodelに共通するフィールドを持たせたいと考えています。しかしどのようにするのがスマートな実装なのかわかりません。 このQAサービスを例に挙げて説明させていただくと、 「質問」と「回答」という2つのテーブルがあります。 「質問」には「タイトル」が、「回答」には「アクセプトフラグ」というフィールドがあります。 でもこの2つにはどちらも「本文」と「ユーザ名」...

モデル名として明らかにまずそうな名前を使おうとすると、ジェネレータで以下のようにエラーが出ます。 $ rails g scaffold symbol name invoke active_record The name 'Symbol' is either already used in your application or reserved by Ruby on Rails. Pleas...

Rails の ActiveRecord のモデルで属性の一意性を保証しようと validates_uniqueness_of を設定しても、内部ではその値が既存かどうかを select でチェックしてから insert/update するだけなので、複数のクライアントから同時に更新処理が行われた場合は重複してしまう可能性があります。一意性を保証するためにはDB側でカラムをユニークと宣言して...