Activerecord :: Relation:从表中获取字段

时间:2015-09-16 23:17:13

标签: ruby-on-rails ruby activerecord

我试图了解使用IRB播放Active Record的内部功能。

我有一个小数据库,其中包含一些我使用SQL创建的表。然后我使用Ruby脚本将Active Record连接到该数据库。我已经加载了模型,这些模型是带有表格的类。名称单一化,并通过attr_accessor使所有属性可访问,但我只获得id,其余的返回nil尝试获取它们。任何线索?

我有桌子" empresas"有四个记录和Empresa班:

2.2.1 :001 > load 'config.db'
 => true 
2.2.1 :002 > e = Empresa.all
 => #<ActiveRecord::Relation [#<Empresa id: 1, razon_social: "Holbrook Co.", cuit: "33-22564787-4", domicilio: "San Lorenzo 336", localidad_id: 7>, #<Empresa id: 2, razon_social: "Marshfield Llc.", cuit: "30-13547542-0", domicilio: "Av. de Mayo 110", localidad_id: 2>, #<Empresa id: 3, razon_social: "Iron Cobra Inc.", cuit: "30-24652120-8", domicilio: "9 de Julio 332", localidad_id: 20>, #<Empresa id: 4, razon_social: "Apple Inc.", cuit: "30-43753246-4", domicilio: "Riverside Road 342", localidad_id: 4>]> 
2.2.1 :003 > e[2]
 => #<Empresa id: 3, razon_social: "Iron Cobra Inc.", cuit: "30-24652120-8", domicilio: "9 de Julio 332", localidad_id: 20> 
2.2.1 :004 > e[2].id
 => 3 
2.2.1 :005 > e[2].razon_social
 => nil 
2.2.1 :006 > e[2].cuit
 => nil 

该模型如下所示:

class Empresa < ActiveRecord::Base
  belongs_to :localidad
  attr_accessor :razon_social, :cuit, :domicilio, :localidad_id
end

在与数据库建立连接的脚本中需要此模型,以及active_recordfb(我使用firebird作为数据库)。

1 个答案:

答案 0 :(得分:2)

ActiveRecord将自动为数据库表中的列创建访问器。

使用attr_accessor定义访问者时,可以覆盖这些访问者。

尝试删除对attr_accessor的调用,然后您的调用将继续执行数据库值!