gpt4 book ai didi

mysql - 在 Rails 中引用同一个模型两次

转载 作者:行者123 更新时间:2023-11-30 21:49:00 25 4
gpt4 key购买 nike

我在 Rails API 中有两个模型(页面和图像),它们之间存在多对多关系。我希望能够在我的页面模型的两个(最终更多)位置引用图像模型(通过 image_ids: [])。

我想要同时返回一个“图片库”数组和一个“特色图片”数组,我现在可以正常工作的图片库是什么,但我正在努力理解从这里到哪里去。这可能吗?

我觉得这不应该像我做的那么复杂,所以我真的很感激任何帮助——我是一个新的开发人员和 rails 的新手。这就是我想要的:

"id": 34,
"title": "Test Page Gallery",
"featured_image": [
"images": [
{
"id": 12,
"title": "test img 2",
"image": {
"url": "/uploads/medium/image/11/image2.jpeg"
}
]
],
"images": [
{
"id": 11,
"title": "test img 1",
"image": {
"url": "/uploads/image/image/11/image1.jpeg"
}, ....
]

这是我得到的:

"id": 34,
"title": "Test Page Gallery",
"featured_image": "[]",
"images": [
{
"id": 11,
"title": "test img 1",
"image": {
"url": "/uploads/image/image/11/image.jpeg"
}, ....
]

强参数:

def page_params
params.permit(:title, image_ids:[], featured_image: [image_ids:[]])
end

页面模型:

class Page < ApplicationRecord
belongs_to :user
has_and_belongs_to_many :images, class_name: "Image", join_table: "images_pages"
end

我将 featured_image 列定义为字符串,但我知道这可能是错误的做法。提前致谢!

最佳答案

我会说你有两种方法之一:

1) 有两个独立的关联,为 featured_images 指定 Image 类名:

page.rb

has_and_belongs_to_many :images, join_table: "images_pages"
has_and_belongs_to_many :featured_images, class_name: Image, join_table: "featured_images_pages"

2) 使用has_many through 关联,并在连接表上有一个标志,无论图像是否有特色:

page.rb

has_many :images, through: :images_pages
has_many :images_pages

images_pages.rb

class ImagesPages
belongs_to :image
belongs_to :page

scope :featured, -> { where(featured: true) }
end

快速阅读后一种方法 here .

我总是更喜欢 has_many through 关系的灵 active 。

尝试一下这些,看看是否有帮助 - 如有任何问题,请告诉我,我会看看如何自定义/扩展 :)

关于mysql - 在 Rails 中引用同一个模型两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48100829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com