gpt4 book ai didi

ruby-on-rails - fixtures 会触发模型回调吗?

转载 作者:行者123 更新时间:2023-11-28 20:57:46 24 4
gpt4 key购买 nike

假设我有一个 User 模型,在 User.rb 中包含以下代码:

before_create :create_dependencies
after_create :build_inbox

我还有一个 users.yml 文件,其中定义了一堆用户装置。

当我运行 rake db:fixtures:load 时,它似乎没有触发回调。

  1. 这是预期的工作方式吗?如果是这样,他们为什么要这样设计?
  2. 有没有办法在加载固定装置时强制触发回调?

最佳答案

Is this how it is expected to work? If so, why did they design it this way?

是的,灯具不使用回调。我假设这是出于性能原因。在不实例化模型的情况下将数据直接加载到数据库中会更快。

Is there a way to force the triggering of the callbacks when loading fixtures?

据我所知没有。你有几个选择。一种是构建你的固定装置,就好像回调已经被触发一样。也就是说,手动创建回调将要创建的数据。例如,如果您有一个对用户密码进行哈希处理的回调,则您需要手动对密码进行哈希处理,然后将该哈希存储在 fixture 中。

第二种解决方案(强烈推荐!)是使用工厂。工厂会触发回调并允许您使用虚拟属性等。这是因为它们每次都会实例化模型。一种流行的 gem 是 Factory Girl .另一个可以尝试的是 Machinist .我还创建了一个 Railscasts episode关于这个话题。

关于ruby-on-rails - fixtures 会触发模型回调吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955307/

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