我想在保存之前更改从输入字段中获取的值。
params[:link]['url'] = "www.facebook.com/redbull"
现在我只想将“redbull”放入数据库。以下代码失败,因为它在验证之前更改了 params[:link]
。我想在有效验证后执行它。
def create
url = params[:link]['url'].split('facebook.com/').last
params[:link]['url'] = url
@link = Link.new(params[:link])
if @link.save
flash[:success] = 'Link was successfully created.'
redirect_to root_path
else
render 'new'
end
end
提前致谢
现在可以了,感谢 caley:
class Link < ActiveRecord::Base
before_save(:on => :create) do
self.url = self.url.split('facebook.com/').last
end
最佳答案
我会投票赞成在模型中尝试使用 before_save 或 after_validation 回调来运行您创建的自定义方法。您还可以将 (:on => :create) 添加到 before_save 回调,这样它就不会在更新时运行。
有点像
class Thing < ActiveRecord::Base
before_save :clean_link
def clean_link
self.link = self.link.split('facebook.com/').last
end
如果需要,请务必设置任何用于访问链接的 getter 或 setter。我在 Rails 3 应用程序中做了类似的事情我在 here 上做了一些工作
关于ruby - 更改参数[ :link] before @link. 保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5882019/