Фабричная девушка с проблемами доступа к определенным атрибутам - PullRequest
0 голосов
/ 02 июня 2011

У меня есть модель пользователя и модель оператора, которая принадлежит пользователю.Я создал несколько фабрик, которые их связывают (в моей функции учетная запись пользователя создается при регистрации оператора), поэтому я сделал этот шаг:

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: "the_user_1@asdf.com", 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:

Итак, вопрос в том, что у пользователя есть пароль, поскольку его можно было создать, не говоря уже о том, что он напечатанпосле создания с использованием фабрики.Проблема в том, что когда я пытаюсь получить доступ к паролю через User.find (user.id) или operator.user, почему этот пароль пуст?

Если это помогает, это для authlogic

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Кажется, я пытался получить доступ к защищенному атрибуту authlogic, поэтому я не смог получить доступ к паролю, даже если попытался снова получить объект пользователя.Мое решение состояло в том, чтобы вместо этого использовать глобальную переменную (@user), чтобы я мог получить к ней доступ в других шагах.

0 голосов
/ 02 июня 2011

Это работает?

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