gpt4 book ai didi

ruby-on-rails - Rails/Mongoid 与 Struct 的关系问题

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:23 25 4
gpt4 key购买 nike

我正在构建这个图书馆应用程序,它有 3 个类。国家、图书馆和书籍。国家有许多图书馆,图书馆属于一个国家。图书馆有很多书,书是嵌入图书馆的。但是,当我执行此 auto_pick_job 时,我们到达 top_free_book 并调用 library.state。由于某种原因,library.state 为 nil。我希望恢复状态但没有骰子。我调用和创建库的方式如下。所以图书馆将永远属于一个现有的国家。

state = Stats.find(x)
library = state.libaries.new(info)
library.save_optimistic!

我也很感激使用 Struct 的关系帮助。

class State
has_many: libraries
end

class Library
belongs_to :state
end

class Book
embedded_in :library

def self.top_free_book(library_id)
library = Library.find(library_id)
library.state
end

AutoPickJob = Struct.new(:library_id) do
def perform
Book.top_free_book(library_id)
end
end

def queue_auto_pick
auto_pick_job = AutoPickJob.new(library_id)
Delayed::Job.enqueue(auto_pick_job)
end
end

最佳答案

belongs_to 通常验证关系的存在,但如果您已经有一些模型是在添加 belongs_to 关联之前创建的,则它们不一定具有关联为他们设定的目标。

另外,即使存在引用库(关联的默认行为是无效),也可以销毁 State 文档。如果您删除而不是销毁 State 文档,这不会运行回调并且可能会使库引用已删除的状态。

因此,请确保您所有的图书馆都这样做:

  1. 设置state_id
  2. 让这些 state_id 引用现有的州文件。

关于ruby-on-rails - Rails/Mongoid 与 Struct 的关系问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301341/

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