Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails FactoryGirl:忽略属性而不创建其他工厂_Ruby On Rails_Ruby_Factory Bot - Fatal编程技术网

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)