如何在具有名为“attribute”的列的数据库上使用 ActiveRecord? (危险属性错误)

2024-06-24

我正在访问一个无法更改的数据库,它有一个名为attribute定义的。每当我尝试访问attribute,我得到这个异常:

属性?由 ActiveRecord(ActiveRecord::DangerousAttributeError) 定义

my code:

class User < ActiveRecord::Base
      def self.authenticate(username,password)
        where(:username => username, :value => password).first
      end
end

我在 ruby​​ on Rails 邮件列表上找到了一个解决问题的计划,但对我不起作用

  class << self
    def instance_method_already_implemented?(method_name)
      return true if method_name == 'attribute'
      super
    end
  end

我不确定这是否重要,但这是我的环境的详细信息:

  • ruby 1.9.2p0(2010-08-18 修订版 29036) [x86_64-darwin10.4.0]
  • Rails
  • 3.0.1 活动记录 (3.0.1) 活动资源 (3.0.1)

更新(已解决):

PLAN A:

select("username, value").where(:username => username, :value => password).first

ActiveRecord 查询支​​持:select参数,它允许您定义想要以字符串形式返回给您的字段。

通常人们使用类似的东西:

:select => 'field1, field2'

如果您知道数据库服务器的原始查询语言,则可以在选择字符串中使用它。使用 SQL 选择字段时的选项之一是使用as修饰符:

select field1 as the_first_field, field2 as the_second_field

并且数据库将使用新字段名称而不是旧字段名称返回字段。如果您的数据库支持,那么这是一种管理遗留字段的简单方法,这些字段的命名方式与 Rails 冲突。

请参阅“学习喜爱 ActiveRecord 的 :select 参数”ActiveRecord 的五个技巧 http://blog.grayproductions.net/articles/five_activerecord_tips" and "选择特定字段 http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields” 在 Ruby on Rails 指南中。

这是我的 Rails 应用程序之一的示例,使用rails console访问我的 Postgres 数据库:

ruby-1.9.2-p180 :007 > dn = DomainName.first
 => #<DomainName id: 1, domain_name: "ip72-208-155-230.ph.ph.cox.net", created_at: "2010-04-20 05:53:22", updated_at: "2010-04-20 05:53:22"> 
ruby-1.9.2-p180 :008 > dn = DomainName.first(:select => 'id, domain_name as dn')
 => #<DomainName id: 1> 
ruby-1.9.2-p180 :009 > dn['id']
 => 1 
ruby-1.9.2-p180 :010 > dn['dn']
 => "ip72-208-155-230.ph.ph.cox.net"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在具有名为“attribute”的列的数据库上使用 ActiveRecord? (危险属性错误) 的相关文章

随机推荐