Ruby on Rails:如何在保存到数据库之前执行函数?

时间:2011-07-06 08:39:52

标签: mysql ruby-on-rails ruby ruby-on-rails-3 activerecord

我想在使用应用程序的new / create函数时更改数据并将其保存到数据库中。

4 个答案:

答案 0 :(得分:5)

before_create :myfunction

def myfunction
  # Edit data
end

应该做的伎俩。

答案 1 :(得分:4)

你应该使用主动回调,正如其他两个答案所述。 * before_create *绝对是您正在寻找的。始终在模型中执行此类逻辑,而不是在控制器中执行。 Rails mantra(众多之一)是“瘦控制器,胖模型”,它可以更轻松地重用代码。

您可以在以下位置查看有效的回调文档:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

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

class MyClass < ActiveRecord::Base
    before_create :alter_my_data

    def alter_my_data
        # any manipulation you want to do here before saving
    end
end

答案 2 :(得分:0)

class User < ActiveRecord::Base
  before_create :validate_username

  def validate_username
    raise "blank error" if username.blank?
    #....your code
  end
end

答案 3 :(得分:0)

您的问题已在上面得到解答,但我建议您查看官方的Ruby on Rails指南:

http://guides.rubyonrails.org/

这些指南很容易理解并涵盖了Rails的许多部分。您的问题在“Active Record Validations and Callbacks”部分中得到解答。