gpt4 book ai didi

ruby-on-rails - 默认情况下,Rails 如何污染事件记录列?

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:11 26 4
gpt4 key购买 nike

关于 Rails 魔术的问题:

我在玩 IRB 和污点?方法,然后我只是做了以下操作:

>> User.first.attributes.collect { |column, value| [column, value.tainted?] }
=> [["phone", true], ["state", false], ["persistence_token", true], ["last_login_ip", true], ["country", true], ["login_count", false], ["last_request_at", false], ["id", false], ["forname", true], ["current_login_at", false], ["name", true]]

有谁知道为什么有些参数被污染而有些没有?是否有办法选择应该污染哪一列?

编辑:

感谢您的回答。

@sgtFloyd:我只是尝试手动更新国家/地区。这是正在发生的事情:

>> u = User.first
>> u.country = "USA"
=> "USA"
>> u.country.tainted?
=> false
>> u.save
=> true
>> u.country.tainted?
=> false
>> u.reload
>> u.country.tainted?
=> true
>> u.country.class
=> String # it's also string in the database

编辑 2:

我删除了 User 模型中的所有内容,一些 String 列似乎没有被污染,而有些则......

非常感谢!

最佳答案

tainttainted? 是 Ruby 对象类的方法。如果您要查找 Rails 应用中修改了哪些对象,您可能会查找changed?

@customer.email = 'new@email.com'
do_something if @customer.email_changed?

关于ruby-on-rails - 默认情况下,Rails 如何污染事件记录列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9728266/

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