2012-03-26 14 views
5

Tôi gặp vấn đề sau. Tôi có một mô hình được gọi là người dùng có một cột có tên là kích hoạt. Tôi cố gắng cập nhật giá trị đó bằng phương thức được kích hoạt ?, nhưng nó cho tôi lỗi: Xác thực không thành công: Mật khẩu không được để trống, Mật khẩu quá ngắn (tối thiểu là 6 ký tự) Không hợp lý với tôi, vì im không chạm vào trường mật khẩu! Tôi chỉ muốn cập nhật cột được kích hoạt. Im đặt ở đây mã tôi nghĩ rằng nó có liên quan, nhưng nếu bạn nghĩ rằng bạn cần nhiều hơn chỉ cần hỏi :) Cảm ơn bạn rất nhiều trước!Rails update_attribute

mẫu:

attr_accessor :password 
attr_accessible :name, :email, :password, :password_confirmation, :activated 
has_many :sucu_votes 

email_regex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 

validates :name, :presence => true, 
            :length => { :maximum => 50 } 

validates :email, :presence => true, 
            :format => {:with => email_regex}, 
            :uniqueness => { :case_sensitive => false } 

validates :password, :presence => true, 
             :length => { :within => 6..15 }, 
             :confirmation => true 

before_save :encrypt_password 

def activated? 
    self.update_attributes!(:activated => true) 
    return self.activated 
end 

điều khiển từ đó phương pháp kích hoạt? được gọi là

def activate 
if request.get? 
     user=User.find_by_id(params[:id]) 
     if user.activated? 
      flash[:notice]="Your account has been activated" 
      #redirect_to :controller => 'sessions', :action => 'new' 
     else 
      flash[:error]="We couldnt activate the account" 
      redirect_to :controller => 'sessions', :action => 'new' 
     end 
    end 
end 

Trả lời

12

Hai điều, trước tiên quy ước ruby ​​là sử dụng các phương pháp vị ngữ để trả về đúng hoặc sai và không làm bất cứ điều gì giống như cập nhật bản ghi. Điều đó không gây ra vấn đề của bạn nhưng là một sự sai lệch so với những gì các lập trình viên khác mong đợi. Thứ hai, thay vì gọi update_attributes cố gắng chỉ gọi:

update_attribute(:activated, true)

này nên bỏ qua phần còn lại của callbacks cho các hồ sơ

+0

Cảm ơn bạn rất nhiều! Tôi thực sự đã có nó như thế trước đây, nhưng nó không hoạt động vì một lý do khác. Nhưng tất cả ok của nó bây giờ :) – gumlym