RUBY ON RAILS - Получить пользовательский ввод для вставки в базу данных, обработать его, вставить новую переменную в базу данных - PullRequest
1 голос
/ 03 апреля 2012

Пользователь должен ввести имя (которое будет вставлено в базу данных), и мне нужно, чтобы имя пользовательского ввода использовалось в другой функции для обработки, а затем мне нужно заново обработанный ввод для вставки в базу данных.

Пока мне удается это сделать:

 A name inserted into database
 -> I saved it (name = personname, nameJob = nil)
 -> I update_attribute('nameJob', nameJob_func(params[:name]))

Есть ли лучший способ, где я могу вставить обе записи вместе в базу данных после обработки nameJob_func ()?

1 Ответ

1 голос
/ 03 апреля 2012

Вы можете n создать before_save обратный вызов , который выполняет функцию nameJob_func(). Поэтому вам никогда не нужно вызывать его явно, так как Rails будет вызывать его непосредственно перед сохранением объекта. Только входное имя должно быть обработано.

YourModel < ActiveRecord::Base
  # Register nameJob_func as a callback
  before_save :nameJob_func

private
  def nameJob_func
    # Do something with self.name
    self.nameJob = 'something you made here with #{self.name}'
    # This value will get saved to the database automatically
  end
end

Теперь, когда объект вызывает .save(), nameJob_func() запускается и получает обновленное значение из :name.

YourModelsController < ActionController::Base
  def create
    @yourobj = YourModel.new(params[:name])
    # The callback is called and then the whole thing gets saved
    @yourobj.save
  end
end
...