Tôi có thiết lập đơn giản là User
và UserProfile
mô hình với Người dùng has_one :user_profile
và UserProfile belongs_to :user
.Đường ray - chuỗi thực hiện sau khi tạo gọi lại & thuộc tính lồng nhau
Nhưng tôi không thể xoay đầu quanh cách Rails xác định thứ tự thực hiện của after_create
gọi lại và accepts_nested_attributes_for
được xác định trong mô hình của tôi. Hãy xem xét hai trường hợp này.
Trường hợp 1:
class User < ActiveRecord::Base
has_one :user_profile
accepts_nested_attributes_for :user_profile
after_create :test_test
end
Bây giờ, nếu tôi có thể tạo một người dùng (với user_profile_attributes băm quá) thông qua giao diện điều khiển, gọi lại after_create
được kích hoạt sau khi người sử dụng và hồ sơ người dùng của nó được tạo ra.
Trường hợp 2: Nếu after_create
được đặt ở phía trên,
class User < ActiveRecord::Base
after_create :test_test
has_one :user_profile
accepts_nested_attributes_for :user_profile
end
callback được kích hoạt sau khi người dùng đã được tạo ra nhưng trước khi tạo hồ sơ người dùng.
Đây có phải là cách nó được mong đợi hoạt động hay không. Rails làm gì trong nội bộ ở đây? Trình tự thực hiện có được xác định theo thứ tự mã không?
Tôi bắt đầu tìm hiểu sâu hơn hoặc gỡ lỗi vấn đề này ở đâu?
Tôi sẽ kiểm tra lại điều này, thứ tự mã dưới dạng gọi lại không liên quan gì đến thứ tự thực hiện .. – Rabbott
@Rabbott - Tôi đánh giá cao! – prasvin
Sử dụng 'inverse_of' có thể hữu ích để giải quyết các phụ thuộc và lưu các vấn đề khi tạo hoặc lưu. ví dụ. 'has_one: user_profile, inverse_of:: user' – ybart