如何在使用ruby-on-rails时,在创建记录后修改Factory定义的属性?

更新于
2026-10-09 21:04:28
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计206个文字,预计阅读时间需要1分钟。

如何在使用ruby-on-rails时,在创建记录后修改Factory定义的属性?

使用FactoryBot创建管理工厂时,在before_create回调中为每个用户分配了默认的用户角色。这意味着在回调发生时,工厂的任何角色都将被更改为用户角色。

如何在使用ruby-on-rails时,在创建记录后修改Factory定义的属性?

使用FactoryBot,我在我的规范中创建管理工厂时遇到了问题,因为在before_create回调中为每个用户分配了一个默认的用户角色.这意味着在回调发生时,我分配工厂的任何角色都将更改为用户.

我真正想做的是这样的事情:

在我的规格内

admin = FactoryBot.create(:user) admin.role = 'admin'

第二行admin.role =’admin’没有做任何事情.有任何想法吗?

我也愿意接受更好的方法.

另一种方式

# Steal some code from MrYoshiji at first. factory :user do sequence(:username) { |n| "User ##{n}"} role 'user' # Then a separate factory inside factory :admin do role 'admin' end end # Use FactoryBot.create(:admin)

本文共计206个文字,预计阅读时间需要1分钟。

如何在使用ruby-on-rails时,在创建记录后修改Factory定义的属性?

使用FactoryBot创建管理工厂时,在before_create回调中为每个用户分配了默认的用户角色。这意味着在回调发生时,工厂的任何角色都将被更改为用户角色。

如何在使用ruby-on-rails时,在创建记录后修改Factory定义的属性?

使用FactoryBot,我在我的规范中创建管理工厂时遇到了问题,因为在before_create回调中为每个用户分配了一个默认的用户角色.这意味着在回调发生时,我分配工厂的任何角色都将更改为用户.

我真正想做的是这样的事情:

在我的规格内

admin = FactoryBot.create(:user) admin.role = 'admin'

第二行admin.role =’admin’没有做任何事情.有任何想法吗?

我也愿意接受更好的方法.

另一种方式

# Steal some code from MrYoshiji at first. factory :user do sequence(:username) { |n| "User ##{n}"} role 'user' # Then a separate factory inside factory :admin do role 'admin' end end # Use FactoryBot.create(:admin)