Sha*_*fun 26 ruby-on-rails ruby-on-rails-3
我刚刚将我的应用程序从Rails 2.3升级到3,并且我为before_create,update,save,destroy等获得了一些DEPRECATION WARNINGS.
有谁知道怎么解决这个问题?
这些是我的警告:
DEPRECATION WARNING: Base#before_create has been deprecated, please use Base.before_create :method instead. (called from /Users/macmini/qna/app/models/user.rb:32)
DEPRECATION WARNING: Base#before_update has been deprecated, please use Base.before_update :method instead. (called from /Users/macmini/qna/app/models/user.rb:40)
DEPRECATION WARNING: Base#after_save has been deprecated, please use Base.after_save :method instead. (called from /Users/macmini/qna/app/models/user.rb:50)
DEPRECATION WARNING: Base#before_destroy has been deprecated, please use Base.before_destroy :method instead. (called from /Users/macmini/qna/app/models/user.rb:56)
Run Code Online (Sandbox Code Playgroud)
只是一个before_create的例子:
def before_create
self.username.downcase!
self.salt = User.make_salt(self.username)
self.hashed_password = User.hash_with_salt(@password, self.salt)
end
Run Code Online (Sandbox Code Playgroud)
von*_*rad 63
你看到的警告是Rails 3试图阻止你覆盖基础before_*
和after_*
方法.这类似于before_filter
控制器中的操作和其他回调.
这意味着不是做:
def before_create
self.username.downcase!
self.salt = User.make_salt(self.username)
self.hashed_password = User.hash_with_salt(@password, self.salt)
end
Run Code Online (Sandbox Code Playgroud)
Rails希望你这样做:
before_create :downcase_username_and_create_password
def downcase_username_and_create_password
self.username.downcase!
self.salt = User.make_salt(self.username)
self.hashed_password = User.hash_with_salt(@password, self.salt)
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您甚至可能将两者分开,因为您可能希望独立生成密码:
before_create :downcase_username, :create_password
def downcase_username
self.username.downcase!
end
def create_password
self.salt = User.make_salt(self.username)
self.hashed_password = User.hash_with_salt(@password, self.salt)
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9581 次 |
最近记录: |