Ruby on Rails сохранение множества принадлежащих_сообщений

В 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 ответ

Вы можете просто назначить это:

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 принимает только идентификатор, а не строку, используйте 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,

Другие вопросы по тегам