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

ruby-on-rails - Nhiều has_many thông qua các mối quan hệ

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 17:56:30 25 4
mua khóa gpt4 Nike

Tôi đang xây dựng một nền tảng viết lách hợp tác. Người dùng có thể có các bộ vật phẩm và bất kỳ vật phẩm nào trong đó đều có thể nằm trong bất kỳ bộ nào và thuộc về bất kỳ người dùng nào. Nhưng điều này có thể gây ra một số vấn đề.

Đây là những mối quan hệ kiểu mẫu của tôi:

Hiệp hội lớp < ActiveRecord::Base
thuộc về :người dùng
thuộc về :set
thuộc về :item
end

Tập lớp < ActiveRecord::Base
has_many :hiệp hội
has_many :users, thông qua: :associations
has_many :items, thông qua: :associations
end

Mục lớp < ActiveRecord::Base
has_many :hiệp hội
has_many :users, thông qua: :associations
has_many :sets, through: :associations
end

Tôi không thể nghĩ ra "đường ray" để xử lý việc này đúng cách.

Câu hỏi 1:

Khi tạo một dự án mới, chỉ liên kết bộ sưu tập/dự án được lưu trữ chứ không phải người dùng:

lớp ItemController < ApplicationController
def create
@set = current_user.sets.find(params[:set_id])
@set.where(title: params[:item][:title]).first_or_create!
end
end

*gia hạn*

Để giải quyết vấn đề 1, cách tốt nhất tôi có thể nghĩ đến là làm như sau:

@set = current_user.sets.find(params[:set_id])
@item = Item.where(name: params[:item][:title]).first_or_create!
Association.where(item_id: @item.id, set_id: @set.id, user_id: current_user.id).first_or_create!

Mặc dù cảm thấy rất không ổn!

Câu hỏi 2:

Giả sử bảng liên kết được điền chính xác từ câu hỏi 1, Bộ điều khiển sau sẽ trả về tất cả các mục thuộc sở hữu của bộ sưu tập, nhưng bỏ qua quyền sở hữu của người dùng:

lớp SetsController < ApplicationController
chỉ số chắc chắn
@sets = current_user.sets.includes(:items)
end
end

*gia hạn*

Vẫn không có may mắn tìm được câu trả lời cho câu hỏi này. Để giải thích vấn đề tốt hơn:

Sau đây sẽ chỉ trả về các bộ sưu tập thuộc về người dùng hiện tại

@sets = current_user.sets.all

Tuy nhiên, phần sau đây sẽ chỉ trả về bộ sưu tập của người dùng nhưng sẽ bao gồm tất cả các mục của bộ sưu tập, ngay cả khi chúng không thuộc về người dùng hiện tại. Nói cách khác, phạm vi người dùng bị loại bỏ.

@sets = current_user.sets.includes(:items)

Tôi đã cố gắng giải quyết vấn đề này cả ngày nhưng dường như không tìm ra manh mối

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

Câu hỏi đầu tiên của bạn là đảm bảo các biến thể hiện của bạn giống nhau. Một là chữ hoa. Nó sẽ trông như thế này:

lớp ItemController < ApplicationController
def create
@set = current_user.sets.find(params[:set_id])
@set.where(title: params[:item][:title]).first_or_create!
end
end

Về Ruby-on-Rails - nhiều mối quan hệ has_many, 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/12608518/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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