【问题标题】:Activerecord::Relation: getting fields from a tableActiverecord::Relation: 从表中获取字段
【发布时间】:2015-09-16 23:17:13
【问题描述】:

我正在尝试了解 Active Record 与 IRB 一起播放的内部功能。

我有一个小型数据库,其中包含一些使用 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 作为数据库)。

【问题讨论】:

  • 你的模型中有什么?
  • 我希望你的模型看起来像class Empresa &lt; ActiveRecord::Base end
  • 类 Empresa
  • 以正确的格式将其添加到您的问题中。

标签: ruby-on-rails ruby activerecord


【解决方案1】:

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

当您使用attr_accessor 定义访问器时,您会覆盖这些访问器。

尝试删除对attr_accessor 的调用,然后您的调用应该继续到数据库值!

【讨论】:

  • 谢谢,这很有帮助。
  • 很高兴听到它,如果它解决了您的问题,请不要忘记单击此答案上的复选标记!享受学习 ActiveRecord :)
  • 你有它..(这是我可以想象的第一个问题),再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多