用户需要输入一个名称(将插入数据库),我需要在另一个函数中使用用户输入名称来处理,然后我需要将新处理的输入插入到数据库中。
到目前为止,我设法做的是:
A name inserted into database
-> I saved it (name = personname, nameJob = nil)
-> I update_attribute('nameJob', nameJob_func(params[:name]))
在处理nameJob_func()后,是否有更好的方法可以将两个条目一起插入数据库?
答案 0 :(得分:1)
执行nameJob_func()
功能的你n create a before_save
callback。因此,您永远不需要显式调用它,因为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