2011-06-02 75 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