gpt4 book ai didi

ruby-on-rails - Rails 协会 - 最佳实践的想法

转载 作者:行者123 更新时间:2023-12-03 00:40:23 27 4
gpt4 key购买 nike

有关 Rails 关联的问题。
考虑以下模型:


  • 事件
  • 图片

人物和事件可以有很多图像。
上传到事件的图像需要具有与多人关联的能力。

这意味着图像之间存在两种关系。
一种将图像直接上传到人物身上的方法。还有一个人在事件中被标记的情况。

基于事件中的一张(或多张)图像中标记的事实,事件之间是否也存在关系?在这方面,它是一种图像标记系统,根据人们被标记的事件创建关联。

想知道 Rails 中创建此关联的最佳实践是什么?非常感谢任何帮助或建议!

最佳答案

在rails中,绝对可以定义一个具有额外字段的连接表。因此,在这种情况下,我将定义下表:

class LinkedImage
belongs_to :person
belongs_to :image

OWNER=1
TAGGED=2

validates :relation_type, :inclusion => {:in => [OWNER, TAGGED]}
end

该表将图像链接到一个人,并且有一个额外的字段relation_type(您可能会想到一个更合适的名称),它现在可以有两个值:1(对于OWNER,表示图像直接上传给该人),2(该人在图像中被标记)。除了关系之外,也许您想存储一些额外的东西,例如图像中的位置、额外的注释,那么您也可以轻松地在此处添加。

这个人看起来像:

class Person
has_many :linked_images
has_many :uploaded_images, :class_name => Image,
:through => :linked_images,
:conditions => "relation_type=#{LinkedImage::OWNER}"
has_many :tagged_in_images, :class_name => Image,
:through => :linked_images,
:conditions => 'relation_type=#{LinkedImage::TAGGED}"
end

Image的代码可能类似。

我希望这会有所帮助。

关于ruby-on-rails - Rails 协会 - 最佳实践的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229272/

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