2

belongs_toRailsのコンセプトでよくわからないことがあります。ドキュメントの状態:

Adding an object to a collection (has_many or has_and_belongs_to_many) automatically saves that object

私がEmployeeエンティティを持っているとしましょう:

class Employee < ActiveRecord::Base  
  belongs_to :department
  belongs_to :city    
  belongs_to :pay_grade
end

次のコードは 3 つの更新プログラムを起動しますか?もしそうなら、それを行うためのより良い方法はありますか? :

e = Employee.create("John Smith")
Department.find(1) << e
City.find(42) << e
Pay_Grade.find("P-78") << e
4

1 に答える 1

3

単純に割り当てることができます:

e = Employee.new(:name => "John Smith")
e.department = Department.find(1)
e.city = City.find(42)
e.pay_grade = Pay_Grade.where(:name => "P-78")

e.save

を変更して、create保存newする前にオブジェクトを作成しました。コンストラクターは、異なる値ではなく、ハッシュを取ります。find文字列ではなく ID のみを受け取りますwhere。代わりにフィールドで使用します。

次のものも使用できます。

Employee.create(:name => "John Smith", 
                :department => Department.find(1), 
                :city => City.find(42), 
                :pay_grade => PayGrade.where(:name => "P-78").first

PayGradeまた、モデル名は .ではなくキャメルケースにする必要があることに注意してくださいPay_Grade

于 2012-09-12T15:45:34.017 に答える