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

Ruby on RailsフレームワークのActive Recordパターンを使用したオブジェクトリレーショナルマッピング(ORM)の実装。


12
find vs find_by vs where
レールは初めてです。レコードを見つける方法はたくさんあると思います。 find_by_<columnname>(<columnvalue>) find(:first, :conditions => { <columnname> => <columnvalue> } where(<columnname> => <columnvalue>).first そして、それらすべてがまったく同じSQLを生成するように見えます。また、複数のレコードを検索する場合も同様です。 find_all_by_<columnname>(<columnvalue>) find(:all, :conditions => { <columnname> => <columnvalue> } where(<columnname> => <columnvalue>) どれを使用するかについての経験則または推奨事項はありますか?




7
ActiveRecordモデルのゲッターメソッドを上書きするにはどうすればよいですか?
ActiveRecordモデルのゲッターメソッドを上書きしようとしています。nameモデルCategoryでと呼ばれる属性があり、次のようなことができるようにしたいと思います。 def name name_trans || name end name_trans属性がnilでない場合はそれを返し、そうでない場合は属性を返しnameます。どうすればいいですか? これは通常、次のように呼び出されます。 @category.name

2
Rails 4でhas_many:through:uniqを使用する際の非推奨警告
Rails 4では、has_many:throughで:uniq => trueを使用すると非推奨の警告が導入されました。例えば: has_many :donors, :through => :donations, :uniq => true 次の警告が表示されます。 DEPRECATION WARNING: The following options in your Goal.has_many :donors declaration are deprecated: :uniq. Please use a scope block instead. For example, the following: has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment' should be rewritten as the …

2
レールの列タイプを長い文字列に変更する
最初の移行で、列contentに文字列Activerecordであることを宣言し、注釈gemに従ってそれをstring(255)にした。 postgresを使用するherokuにアプリをプッシュした後、コンテンツに255より長い文字列をフォームに入力すると、エラーが発生します PGError: ERROR: value too long for type character varying(255) 問題は、コンテンツにおそらく非常に長い文字列(フリーテキスト、数千文字になる可能性がある)を含める必要があることです pgはどの変数を受け入れますか(文字列はこれには適切ではありません)。 その列のタイプを置き換えるマイグレーションを作成するにはどうすればよいですか ありがとう

3
ActiveRecordは選択した列のみを検索して返します
編集2 これに出くわしたら、両方の答えをチェックしてください。 かなり大きなカスタムデータセットがあり、jsonとしてエコーされて戻ってきます。一部は次のとおりです。 l=Location.find(row.id) tmp[row.id]=l しかし、私は次のようなことをしたいと思います: l=Location.find(row.id).select("name, website, city") tmp[row.id]=l しかし、これは機能していないようです。これを機能させるにはどうすればよいですか? どうも 別の方法で編集1、私が含めたい属性のみの配列を渡すことができる方法はありますか?

9
失敗したRails移行のロールバック
失敗したレールの移行をどのようにロールバックしますか?rake db:rollback失敗した移行は元に戻されると思いますが、いいえ、前の移行(失敗した移行から1を引いたもの)をロールバックします。そしてrake db:migrate:down VERSION=myfailedmigration、どちらも機能しません。私はこれに数回遭遇しました、そしてそれは非常にイライラします。問題を再現するために私が行った簡単なテストは次のとおりです。 class SimpleTest < ActiveRecord::Migration def self.up add_column :assets, :test, :integer # the following syntax error will cause the migration to fail add_column :asset, :test2, :integer end def self.down remove_column :assets, :test remove_column :assets, :test2 end end 結果: == SimpleTest:移行============================================= ======== --add_column(:assets、:test、:integer) -> 0.0932s --add_column(:asset、:error) レーキが中止されました! エラーが発生し、それ以降の移行はすべてキャンセルされました。 …

12
Rails4のLEFTOUTER JOIN
私は3つのモデルを持っています: class Student < ActiveRecord::Base has_many :student_enrollments, dependent: :destroy has_many :courses, through: :student_enrollments end class Course < ActiveRecord::Base has_many :student_enrollments, dependent: :destroy has_many :students, through: :student_enrollments end class StudentEnrollment < ActiveRecord::Base belongs_to :student belongs_to :course end 特定の学生に関連付けられているStudentEnrollmentsテーブルに存在しないCoursesテーブルのコースのリストをクエリしたいと思います。 おそらく左結合が進むべき道であることがわかりましたが、railsのjoins()はテーブルのみを引数として受け入れるようです。私が望むことをするだろうと思うSQLクエリは次のとおりです。 SELECT * FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.