2011-08-26 30 views
1

嗯,我已經中factories.rb以下哪一個是用FactoryGirl別名屬性的正確方法?

Factory.alias /(.*_)confirmation/, "\1" 

Factory.define :user do |f| 
    f.new_pass 'asdasdasd' 
    f.new_pass_confirmation 'asdasdasd' 
end 

,然後當我創造我做了以下用戶:

Factory.build(:user, :new_pass => 'something', :new_pass_ => 'something_else') 

但它拋出我的一個錯誤:

undefined method `new_pass_=` for #<User:0x1234567> 

不應該FactoryGirl轉換new_pass_到new_pass_confirmation?

回答

1

factory_girl中的別名用於防止兩個屬性相互衝突。典型的例子是關聯vs外鍵:如果你的工廠定義了「用戶」關聯,並且你通過傳遞「user_id」來覆蓋它,那麼「user_id」應該優先。

如果你想要的密碼,確認密碼覆蓋,你會使用這個別名:

Factory.alias /(.*)_confirmation/, "\1" 

這聽起來像你想要的密碼確認默認密碼,你可以這樣做:

Factory.define :user do |f| 
    f.new_pass 'asdasdasd' 
    f.new_pass_confirmation { |u| u.new_pass } 
end 

在新的語法,你可以離開了塊參數:

FactoryGirl.define do 
    factory :user do 
    new_pass 'asdasdasd' 
    new_pass_confirmation { new_pass } 
    end 
end 
相關問題