使用 Ruby on Rails 框架开发的 Web 应用程序是否可以使用第三方安全工具拦截对其的所有调用?对该 Web 应用程序的任何调用都会转到安全工具而不是 Web 应用程序本身,然后安全工具可以将其重定向到 Web 应用程序。
在响应端类似,Web 应用程序响应在发送到客户端(浏览器)之前被安全工具拦截
使用 Ruby on Rails 框架开发的 Web 应用程序是否可以使用第三方安全工具拦截对其的所有调用?对该 Web 应用程序的任何调用都会转到安全工具而不是 Web 应用程序本身,然后安全工具可以将其重定向到 Web 应用程序。
在响应端类似,Web 应用程序响应在发送到客户端(浏览器)之前被安全工具拦截
如果我了解您想要正确执行的操作,您可以使用 befor_methods 来执行此操作
回调是 Active Record 对象生命周期的挂钩,允许您在更改对象状态之前或之后触发逻辑。这可用于确保在调用destroy(通过覆盖before_destroy)或在验证属性之前(通过覆盖before_validation)删除关联和依赖对象。作为发起回调的示例,考虑 Base#save 调用新记录:
(-) save
(-) valid
(1) before_validation
(-) validate
(2) after_validation
(3) before_save
(4) before_create
(-) create
(5) after_create
(6) after_save
(7) after_commit
此外,可以将 after_rollback 回调配置为在发出回滚时触发。查看 ActiveRecord::Transactions 以获取有关 after_commit 和 after_rollback 的更多详细信息。
此外,每当触摸对象时都会触发 after_touch 回调。
最后,为查找器找到并实例化的每个对象触发 after_find 和 after_initialize 回调,并且在实例化新对象后也触发 after_initialize。
总共有 19 个回调,它们为您提供了巨大的能力来为 Active Record 生命周期中的每个状态做出反应和准备。为现有记录调用 Base#save 的顺序类似,除了每个 _create 回调被相应的 _update 回调替换。
例子:
class CreditCard < ActiveRecord::Base
# Strip everything but digits, so the user can specify "555 234 34" or
# "5552-3434" and both will mean "55523434"
before_validation(on: :create) do
self.number = number.gsub(/[^0-9]/, "") if attribute_present?("number")
end
end
class Subscription < ActiveRecord::Base
before_create :record_signup
private
def record_signup
self.signed_up_on = Date.today
end
end
class Firm < ActiveRecord::Base
# Destroys the associated clients and people when the firm is destroyed
before_destroy { |record| Person.destroy_all "firm_id = #{record.id}" }
before_destroy { |record| Client.destroy_all "client_of = #{record.id}" }
end