タグ付けされた質問 「activerecord」

Active Recordは、ドメインロジックとストレージアブストラクションを1つのオブジェクトに組み合わせたパターンです。パターンに関する質問にはこのタグを使用し、Rails ORMフレームワークに関する質問には[rails-activerecord]を使用します。


9
空のActiveRecordリレーションを返す方法は?
ラムダ付きのスコープがあり、引数を取る場合、引数の値によっては、一致がないことはわかっているかもしれませんが、空の配列ではなく、関係を返したいと思います。 scope :for_users, lambda { |users| users.any? ? where("user_id IN (?)", users.map(&:id).join(',')) : [] } 私が本当に望んでいるのは、「すべて」の反対である「なし」メソッドです。これは、まだ連鎖できるリレーションを返しますが、クエリが短絡されます。

11
Rails:列から一意の値を選択する
私はすでに実用的な解決策を持っていますが、これがうまくいかない理由を本当に知りたいです: ratings = Model.select(:rating).uniq ratings.each { |r| puts r.rating } 一意の値を選択しますが、印刷はしません。重複を含むすべての値を印刷します。そしてそれはドキュメントにあります:http : //guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields

6
RailsレーキタスクはActiveRecordモデルへのアクセスを提供しますか?
カスタムのrakeタスクを作成しようとしていますが、モデルにアクセスできないようです。これは暗黙のうちにrailsタスクに含まれているものだと思いました。 lib / tasks / test.rakeに次のコードがあります。 namespace :test do task :new_task do puts Parent.all.inspect end end そして、これが私の親モデルがどのように見えるかです: class Parent < ActiveRecord::Base has_many :children end これはかなり単純な例ですが、次のエラーが発生します。 /> rake test:new_task (in /Users/arash/Documents/dev/soft_deletes) rake aborted! uninitialized constant Parent (See full trace by running task with --trace) 何か案は?ありがとう


19
Railsモデルでの大文字と小文字を区別しない検索
私の製品モデルにはいくつかのアイテムが含まれています Product.first => #<Product id: 10, name: "Blue jeans" > 現在、別のデータセットからいくつかの製品パラメーターをインポートしていますが、名前のスペルに一貫性がありません。たとえば、他のデータセットでBlue jeansは、綴りが可能Blue Jeansです。 したかったのProduct.find_or_create_by_name("Blue Jeans")ですが、これは最初のものとほとんど同じ新製品を作成します。小文字の名前を見つけて比較したい場合、私の選択肢は何ですか。 ここではパフォーマンスの問題はそれほど重要ではありません。100〜200の製品しかないため、これをデータをインポートする移行として実行したいと考えています。 何か案は?

6
このActiveRecord :: ReadOnlyRecordエラーの原因は何ですか?
これは答えられたこの前の質問に続く。実際に、そのクエリから結合を削除できることを発見したので、機能するクエリは start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true] これは動作するようです。ただし、これらのDeckCardを別の関連付けに移動しようとすると、ActiveRecord :: ReadOnlyRecordエラーが発生します。 これがコードです for player in @game.players player.tableau = Tableau.new start_card = start_cards.pop start_card.draw_pile = false player.tableau.deck_cards << start_card # the error occurs on this line end および関連するモデル(tableauはテーブルのプレイヤーカードです) class Player …

5
Rails find_or_create_by複数の属性?
find_or_create_byというアクティブレコードには、便利な動的属性があります。 Model.find_or_create_by_<attribute>(:<attribute> => "") しかし、複数の属性でfind_or_createを実行する必要がある場合はどうなりますか? GroupとMemberの間のGroupMemberと呼ばれるM:M関係を処理するモデルがあるとします。member_id = 4のインスタンスを多数持つことができますが、member_id = 4とgroup_id = 7のインスタンスを2回以上使いたくありません。 GroupMember.find_or_create(:member_id => 4, :group_id => 7) これを処理するより良い方法があるかもしれないと思いますが、find_or_createのアイデアの便利さを気に入っています。



4
delete_allとdestroy_all?
テーブルからレコードを削除する最善の方法を探しています。たとえば、ユーザーIDが多くのテーブルにあるユーザーがいます。このユーザーと、すべてのテーブルで彼のIDを持つすべてのレコードを削除します。 u = User.find_by_name('JohnBoy') u.usage_indexes.destroy_all u.sources.destroy_all u.user_stats.destroy_all u.delete これは機能し、すべてのテーブルからユーザーのすべての参照を削除しますが、destroy_all処理が非常に重いと聞いたので、を試しましたdelete_all。ユーザーを自分のユーザーテーブルから削除するだけでid、他のすべてのテーブルからはnullになりますが、レコードはそのまま残ります。このようなタスクを実行するための正しいプロセスを誰かが共有できますか? 関連するすべてのオブジェクトで関数がdestroy_all呼び出されるのがわかりdestroyますが、正しいアプローチを確認したいだけです。


10
Rails 3の移行:参照列を追加しますか?
(例)で新しいRails 3マイグレーションを作成する場合 rails g migration tester title:tester user:references 、すべてが正常に動作します...ただし、次の行に沿って何かを含む列を追加した場合: rails g migration add_user_to_tester user:references 参照フィールドは認識されません。手短に言えば、問題は次のとおりです。コマンドラインからRailsマイグレーションに参照列を追加するにはどうすればよいですか?


4
ActiveRecord属性メソッドをオーバーライドする
私が話していることの例: class Person < ActiveRecord::Base def name=(name) super(name.capitalize) end def name super().downcase # not sure why you'd do this; this is just an example end end これは機能しているようですが、ActiveRecord :: Base docsの属性メソッドのオーバーライドに関するセクションを読んだだけで、read_attributeおよびwrite_attributeメソッドの使用を提案しています。上記の例で私がやっていることに何か問題があるに違いないと思いました。そうでなければ、なぜこれらのメソッドを属性メソッドをオーバーライドする「正しい方法」として祝福するのでしょうか?彼らはもっと醜いイディオムを強制しているので、それには正当な理由があるに違いない... 私の本当の質問:この例には何か問題がありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.