Ruby on Rails保存多个belongs_to关联

时间:2012-09-12 15:43:09

标签: ruby-on-rails activerecord associations belongs-to

在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

1 个答案:

答案 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