cuốn sách gpt4 ai đã làm

ruby-on-rails - Làm cách nào để giữ mối quan hệ has_many :through khi tuần tự hóa thành JSON và quay lại Rails 4.0.3?

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 11:04:12 26 4
mua khóa gpt4 Nike

Làm cách nào để chuyển đổi sang JSON và quay lại và giữ mối quan hệ? Khi tôi giải nén các đồ vật, nó nghĩ rằng chúng không tồn tại!

irb(chính):106:0* p = Post.last
=> #<đăng>
irb(chính):107:0>p.tags
=> #
irb(chính):109:0* p.tags.count
=> 2 #### !!!!!!!!!!!!

irb(chính):110:0> json = p.to_json
=> "{\"id\":113,\"title\":... }"
irb(main):111:0> p2 = Post.new( JSON.parse(json) )
=> #

irb(chính):112:0> p2.tags
=> #
irb(chính):113:0> p2.tags.count
=> 0 #### !!!!!!!!!!!!

Đây là mô hình

lớp Bài đăng < ActiveRecord::Base
has_many :taggings, :depend => :destroy
has_many :tags, :through => :taggings

Có người đề xuất nhưng không được

irb(main):206:0* Post.new.from_json p.to_json(include: :tags)
ActiveRecord::AssocationTypeMismatch: Đã mong đợi Tag(#60747984), đã nhận được Hash(#15487524)

câu trả lời hay nhất

Tôi đã mô phỏng chính xác kịch bản giống như của bạn và tìm thấy:

Bất cứ khi nào một mô hình (Bài đăng) cóhas_many xuyên suốtkhi được liên kết và sau đó khi một phiên bản của mô hình đó được tạo, tức là.Bưu kiệnvượt qua mộtBămVí dụ:Post.new( JSON.parse(json) ) hoặc Post.new(id: 113) Có vẻ như Rails xử lý chúng theo cách khác nhau mặc dù chúng trỏ đến cùng một bản ghi.

Tôi đã chạy các lệnh sau theo thứ tự được đưa ra dưới đây:

p = Đăng.last
p.tags
p.tags.count
json = p.to_json

p2 = Post.new( JSON.parse(json) )
p2.tags
p2.tags.count ## Đưa ra số đếm không chính xác

p3 = Post.find(JSON.parse(json)["id"]) ### Xem ghi chú bên dưới
p3.tags
p3.tags.count ## Đưa ra số đếm chính xác

Thay vì sử dụng Hash trực tiếp để tạo một phiên bản Post mới, tôi sử dụng phiên bản thu được từ json đã được giải tuần tự hóa NHẬN DẠNG Nhận hồ sơ từ cơ sở dữ liệu. Trong trường hợp này, ví dụ p3 và ví dụ p2 Chúng đề cập đến cùng một Bài đăng, nhưng Rails diễn giải chúng theo cách khác nhau.

Giới thiệu về Ruby-on-Rails - Làm cách nào để giữ mối quan hệ has_many :through khi tuần tự hóa thành JSON và quay lại Rails 4.0.3? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/22106143/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress