在Rails的belongs_to
概念中有一些我不太了解的东西。文档说明:
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
以下代码是否会触发三个更新,如果有,是否有更好的方法可以执行此操作? :
e = Employee.create("John Smith")
Department.find(1) << e
City.find(42) << e
Pay_Grade.find("P-78") << e
答案 0 :(得分: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
。