ruby-on-rails – 灯具是否触发模型回调?

说我有一个User模型,在User.rb中使用以下代码
before_create :create_dependencies
after_create :build_inBox

而且我还有一个users.yml文件,其中定义了一大堆用户fixture.

当我运行rake db:fixtures:load时,它似乎不会触发回调.

这是怎么预期的工作?如果是这样,为什么他们这样设计呢?
>有没有办法在加载灯具时强制触发回调?

解决方法

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?

从来没听说过.你有几个选择.一个是建立你的灯具,好像回调已经被触发.也就是说,手动创建回调的数据.例如,如果您有一个回调哈希用户的密码,则需要手动哈希密码,然后将该哈希存储在固定装置中.

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

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...