gpt4 book ai didi

ruby - 更改参数[ :link] before @link. 保存

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:50 27 4
gpt4 key购买 nike

我想在保存之前更改从输入字段中获取的值。

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com