2011-06-02 74 views
0

我有一個用戶模型和屬於用戶的操作員模型。我創造了一些工廠是他們交往所以我做了這一步(在我的功能,當操作員報中創建用戶帳戶):訪問某些屬性的工廠女孩​​問題

def create_operator_with_user(operator_name) 
    user = Factory(:user) 
    puts "MY PASS: #{user.password}" 
    operator = Factory(:operator, :chief_pilot_or_business_owner => operator_name, :user_id => user.id) 
    pew = User.find(operator.user_id) 
    puts "USER: #{operator.user.inspect} PASS: #{operator.user.password} PEWPASS: #{pew.password}" 
end 

這是我的用戶廠:

Factory.define :admin, :class => User do |f| 
    f.sequence(:login)   { |n| "admin#{n}"} 
    f.is_admin     true 
    f.password     "password" 
    f.password_confirmation  "password" 
    f.sequence(:email)   { |n| "test#{n}@test.com"} 
end 

Factory.define :user, :parent => :admin do |f| 
    f.sequence(:login)   { |n| "user_#{n}" } 
    f.sequence(:email)   { |n| "the_user_#{n}@asdf.com" } 
end 

我試圖運行我的特點,這裏是輸出:

MY PASS: password 
USER: #<User id: 181, login: "user_1", email: "[email protected]", crypted_password: "e9f6932a07cbe6e49073a331530f9dc01a3482502d25770be00...", password_salt: "YEjT9Q8EGYdrNh4qGZda", persistence_token: "259a61440f6ecd001e79a4aaf1c5c343e50be04388bbf1718c3...", created_at: "2011-06-02 04:24:34", updated_at: "2011-06-02 04:24:34", is_admin: true> 
PASS: 
PEWPASS: 

所以現在的問題是,用戶是否有密碼,因爲它允許創建,更何況它打印出來是創建後d使用工廠。問題是,當我嘗試通過User.find(user.id)或operator.user訪問密碼時,爲什麼密碼爲空?

如果有幫助,這是用於authlogic

回答

0

看來,我試圖訪問authlogic的保護屬性,這就是爲什麼我無法訪問,即使我試圖再次獲得用戶對象的密碼。我的解決方案是使用全局變量(@user),所以我可以在其他步驟訪問它。

0

這是行得通嗎?

Factory.define :admin, :class => :user do |f| 
+0

呃我的工廠沒有失敗,它更多的我不能訪問密碼屬性 – corroded 2011-06-02 04:54:51

+0

哦。在這種情況下,你不想顯示類似#{user.crypted_pa​​ssword}「的東西嗎? – BenB 2011-06-02 05:04:03