有没有办法覆盖创建方法以及建立工厂女孩?

时间:2015-12-03 16:25:48

标签: ruby factory-bot

在factory girl中,你可以通过指定initialize_with块来覆盖构建方法,有没有办法用create方法做到这一点?

看起来当你在工厂女孩中调用create时,它会在内部调用#build,然后保存!但是,我正在使用API​​ / gem支持的模型,然后调用#build然后保存!不起作用,但确实有持久性的概念。我该如何覆盖这些工厂的创建?它会比覆盖保存更清洁!。

1 个答案:

答案 0 :(得分:2)

是的,您可以覆盖 Button b1,b2; EditText ed1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button)findViewById(R.id.blogin); b2=(Button)findViewById(R.id.bsignup); ed1=(EditText)findViewById(R.id.EVPassword); } public void onButtonClick(View v){ if (v.getId() == R.id.blogin) { EditText a = (EditText)findViewById(R.id.ETmatrix); String str = a.getText().toString(); ed1 = (EditText)findViewById(R.id.EVPassword); String pass = ed1.getText().toString(); String password = helper.searchPass(str); if(pass.equals(password)) { Intent i = new Intent(MainActivity.this, HomePage.class); i.putExtra("matrix", str); startActivity(i); } else { Toast temp = Toast.makeText(MainActivity.this, "Matrix No. & Password does not match!!", Toast.LENGTH_SHORT); temp.show(); } } if (v.getId() == R.id.bsignup ) { Intent i = new Intent(MainActivity.this, SignUp.class); startActivity(i); } } } 。请参阅GETTING_STARTED中的Custom Methods For Persisting Objects

to_create

您还可以定义custom "strategy",这是FactoryGirl称之为factory :different_orm_model do to_create { |instance| instance.persist! } end build之类的内容。