Tôi không thể tìm thấy bất kỳ tài liệu nào về phương thức .build trong Rails (tôi hiện đang sử dụng 2.0.2).Ruby on Rails. Làm thế nào để sử dụng phương thức Active Record .build trong một: thuộc về mối quan hệ?
Thông qua thử nghiệm có vẻ như bạn có thể sử dụng phương pháp xây dựng để thêm bản ghi vào mối quan hệ has_many
trước khi bản ghi đã được lưu.
Ví dụ:
class Dog < ActiveRecord::Base
has_many :tags
belongs_to :person
end
class Person < ActiveRecord::Base
has_many :dogs
end
# rails c
d = Dog.new
d.tags.build(:number => "123456")
d.save # => true
này sẽ tiết kiệm được cả hai con chó và thẻ với các phím nước ngoài đúng cách. Điều này dường như không hoạt động trong mối quan hệ belongs_to
.
d = Dog.new
d.person.build # => nil object on nil.build
Tôi cũng đã cố gắng
d = Dog.new
d.person = Person.new
d.save # => true
Chìa khóa nước ngoài tại Dog
không được thiết lập trong trường hợp này là do thực tế là vào thời điểm đó nó được lưu lại, người mới không có một id vì nó chưa được lưu.
Câu hỏi của tôi là:
Làm thế nào để xây dựng công trình để Rails là đủ thông minh để tìm ra cách để lưu hồ sơ theo thứ tự đúng?
Tôi có thể làm điều tương tự như thế nào trong mối quan hệ
belongs_to
?Tôi có thể tìm thấy bất kỳ tài liệu nào về phương pháp này?
Cảm ơn bạn
Về tài liệu, xem Rails Hướng dẫn [_ "Các phương pháp bổ sung bởi' belongs_to'" _] (http://guides.rubyonrails.org/association_basics.html#methods-added-by-belongs-to) và [_ "Phương thức được thêm bởi' has_one' "_] (http://guides.rubyonrails.org/association_basics.html#methods-added-by-has-one). Bạn có thể tìm thấy tài liệu kỹ thuật khác trong tài liệu API: ['attribute_to'] (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to) và [' has_one'] (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one). – Dennis