Ruby on rails FactoryGirl:忽略属性而不创建其他工厂
有时策略的Ruby on rails FactoryGirl:忽略属性而不创建其他工厂,ruby-on-rails,ruby,factory-bot,Ruby On Rails,Ruby,Factory Bot,有时策略的attributes\u会返回不必要的属性,换句话说,如果我们需要几个属性,而不是返回所有属性,该怎么办 FactoryGirl.define do factory :user do name { FFaker::Name.name } nickname { FFaker::Name.suffix } email { FFaker::Internet.email } factory :special_user do provider '
attributes\u会返回不必要的属性,换句话说,如果我们需要几个属性,而不是返回所有属性,该怎么办
FactoryGirl.define do
factory :user do
name { FFaker::Name.name }
nickname { FFaker::Name.suffix }
email { FFaker::Internet.email }
factory :special_user do
provider 'email'
confirmed_at Time.now.strftime('%F %T')
end
trait :confirmation do
current_password 'secret098'
password 'secret567'
end
trait :valid do
password_confirmation 'secret567'
end
trait :invalid do
password_confirmation 'secret568'
end
end
end
需要使用带有特征的工厂,但是否可以仅返回当前密码
、密码
和密码确认
attributes\u for()
不适用于traits。或者有其他方法可以做到这一点 attributes\u for
将返回属性散列,因此您可以从该散列中选择所需的属性
例如
attributes\u for
将返回属性的散列,因此您可以从该散列中选择所需的属性
例如
我不完全明白你想做什么或什么不起作用。对于上面的示例,您能否给出
调用的示例属性\u,它返回什么,以及您希望它返回什么?一般来说,特质与你的属性并不匹配,不是吗?使用有意义的组合模型名称/属性,而不是foo/bar/baz(正如您开始使用user/special_user时所做的那样),也可以使示例更易于理解。听起来您希望访问特性,而不是它们在工厂中定义的特性,而这不是它们的设计工作方式。@sevensacat我知道,但也许还有其他方法可以过滤属性?我想你可以创建一个只包含特征而不包含其他内容的工厂,并要求该工厂的属性?总的来说,这些特性似乎只是为了混入工厂而设计的,从来没有独立使用过。也许有一些方法可以通过FactoryGirl内部API实现。我不完全理解您想要做什么或什么不起作用。对于上面的示例,您能否给出
调用的示例属性\u,它返回什么,以及您希望它返回什么?一般来说,特质与你的属性并不匹配,不是吗?使用有意义的组合模型名称/属性,而不是foo/bar/baz(正如您开始使用user/special_user时所做的那样),也可以使示例更易于理解。听起来您希望访问特性,而不是它们在工厂中定义的特性,而这不是它们的设计工作方式。@sevensacat我知道,但也许还有其他方法可以过滤属性?我想你可以创建一个只包含特征而不包含其他内容的工厂,并要求该工厂的属性?总的来说,这些特性似乎只是为了混入工厂而设计的,从来没有独立使用过。也许有一些方法可以通过FactoryGirl内部API实现。谢谢,我知道我可以做到。事实上,我想知道这在工厂层面是否可行。谢谢,我知道我能做到。事实上,我想知道这在工厂层面是否可行。
FactoryGirl.attributes_for(:user, :confirmation)
.slice(:current_password, :password_confirmation)