Mysql RubyonRails:在保存到数据库之前如何执行函数?

Mysql RubyonRails:在保存到数据库之前如何执行函数?,mysql,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Mysql,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我想在使用应用程序的新建/创建功能时更改数据并将其保存到数据库中 before_create :myfunction def myfunction # Edit data end 应该做到这一点。类用户

我想在使用应用程序的新建/创建功能时更改数据并将其保存到数据库中

before_create :myfunction

def myfunction
  # Edit data
end
应该做到这一点。

类用户class User < ActiveRecord::Base
  before_create :validate_username

  def validate_username
    raise "blank error" if username.blank?
    #....your code
  end
end
创建前:验证\u用户名 def验证\u用户名 如果username.blank,是否引发“blank error”? #……你的密码 结束 结束
正如另外两个答案所述,您应该使用主动回调。“创建前”绝对是您想要的。始终在模型中执行这种逻辑,而不是在控制器中。Rails的口号(众多口号之一)是“瘦控制器,胖模型”,这使得代码重用更加容易

您可以在以下位置查看活动回调文档:

另外,这里有一个你想要实现的例子

class MyClass < ActiveRecord::Base
    before_create :alter_my_data

    def alter_my_data
        # any manipulation you want to do here before saving
    end
end
classmyclass
上面已经回答了您的问题,但我真的建议您查看官方的Ruby on Rails指南:


导轨易于理解,并覆盖导轨的许多部分。您的问题在“活动记录验证和回调”部分得到了回答。

您想在应用程序范围内还是特定于模型进行此操作?应该像在回答中一样在模型中进行,整个大型ruby on rails文档非常庞大,但ruby on rails本身带有脚手架很容易=)也感谢链接(但是他们应该在那里修复tpyo,一些文本部分很难阅读,因为文本大小太小)我同意!ctrl+mousewheel向上放大文本;-)我检查了它们,但是你第一次使用ruby on rails和脚手架了吗?有ruby(on rails)的Huuuge文档吗没有计划下一步该怎么做,而你必须在几天内从头开始编写一个全新的应用程序?我如何知道在活动记录验证和回拨时存在这种情况?我已经知道active record和所有其他东西,但不知道在哪里搜索、搜索什么以及如何搜索。在验证方法中引发异常?真正地