gpt4 book ai didi

ruby-on-rails - ActiveRecord::DangerousAttributeError - 属性?由 ActiveRecord 定义

转载 作者:行者123 更新时间:2023-12-03 19:36:38 27 4
gpt4 key购买 nike

我有一个现有的数据库,其中包含一些使用列名 attribute 的表.我根本无法更改此名称,因为这意味着重新编译我们的整个应用程序。

尝试访问数据库时,我最终得到:

attribute? is defined by ActiveRecord

首先,我尝试使用数据映射器,但我无法继续使用它,并且发现自己正在修复不应该被破坏的东西——比如嵌套属性......

所以,我回到 ar 并使用它来解决问题:
class Radcheck < ActiveRecord::Base
set_table_name 'radcheck'
class << self
def instance_method_already_implemented?(method_name)
return true if method_name == 'attribute?'
return true if method_name == 'attribute_before_type_cast'
return true if method_name == 'attribute='
return true if method_name == 'attribute'
return true if method_name == 'attribute_changed?'
return true if method_name == 'attribute_change'
return true if method_name == 'attribute_will_change!'
return true if method_name == 'attribute_was'
return true if method_name == 'attribute_column'
return true if method_name == 'reset_attribute!'
super
end
end
end

但这很困惑,当我真正尝试访问 table 时,这让我很困惑......

我的其他选择是什么 - 有什么好方法可以绕过这个小家伙吗?

最佳答案

我将自己回答这个问题,因为上述内容并没有完全解决。

尽管重命名了我的 Controller 中的列:

 @radcheck = Radcheck.find(:all, :select => 'attribute AS attr')

我仍然无法实际使用属性。

最后我用了 this excellent gem, safe_attributes,做到这一点。现在我可以用这个调用:
<% @radcheck.each do |radcheck| %>
<%= radcheck.attr %>
<% end %>

关于ruby-on-rails - ActiveRecord::DangerousAttributeError - 属性?由 ActiveRecord 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8143954/

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