Michael Hartl'ın RoR eğitimini takip ediyorum ve şifre şifrelemesinin temellerini ele alıyor. Sonra yazdımRaylar - before_save çalışmıyor?
(şifrelemek yöntem gerçekten uygulanmadı için Açıkçası bu hiç şifreleniyor yapmıyor ama bu benim soru değil)
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :name, :email,: password, :password_confirmation
email_regex = /^[A-Za-z0-9._+-][email protected][A-Za-z0-9._-]+\.[A-Za-z0-9._-]+[A-Za-z]$/
#tests for valid email addresses.
validates :name, :presence => true,
:length => {:maximum => 50}
validates :email, :presence => true,
:format => {:with => email_regex},
:uniqueness => {:case_sensitive => false}
validates :password, :presence => true,
:length => {:maximum => 20, :minimum => 6},
:confirmation => true
before_save :encrypt_password
private
def encrypt_password
@encrypted_password = encrypt(password)
end
def encrypt(string)
string
end
end
: bu haliyle bu Kullanıcı modelidir (öğretici göre) aşağıdaki Spektroskopisi: bu testlerin
require 'spec_helper'
describe User do
before(:each) do
@attr = { :name => "Example User", :email => "[email protected]",
:password => "abc123", :password_confirmation => "abc123"}
end
describe "password encryption" do
before(:each) do
@user = User.create!(@attr) # we are going to need a valid user in order
# for these tests to run.
end
it "should have an encrypted password attribute" do
@user.should respond_to(:encrypted_password)
end
it "should set the encrypted password upon user creation" do
@user.encrypted_password.should_not be_blank
end
end
end
birinci geçer, ancak @user.encrypted_password
sıfır olduğundan, ikinci test başarısız olur. Ama neden encrypt_password
yönteminin before_save
tarafından çağrıldığından nil olduğunu anlamıyorum. Biliyorum bir şey eksik olmalıyım - birisi açıklayabilir mi? encrypt_password yöntemi yanlış
Sana "kabul cevabı" verdi ama o çözmek istiyorsanız hala benim takip soru burada yani bu kavramsal sorunlar yaşıyorum: http://stackoverflow.com/questions/6327174/rails-self-vs :) Puan kazanmak için başka bir fırsat. – Kvass