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
,