繁体   English   中英

具有手动数据库连接的ActiveRecord子类无法直接访问列变量

[英]ActiveRecord Subclass with manual DB connection can't directly access column variables

我的一个Rails模型有一个小问题。 没什么(我已经做过),但是我对实际问题感兴趣。

基本上,我有一个基于ActiveRecord的类“ Events”,该类已使用“ Establishment_connection”连接到远程数据库。 一切正常,我什至可以执行“ Event.find(:all)”。 但是,我无法使用任何便捷的(column_name)方法。 我被迫做以下事情:

for each event in Event.find(:all)
  puts event["Point"]
  puts event["Timestamp"]
end

...代替

for each event in Event.find(:all)
   puts event.point
   puts event.timestamp
end

仅供参考,当我生成模型时,我只运行“脚本/生成模型事件”,而没有其他任何事情。 然后,我在模型内部使用了“ Establishment_connection”和“ set_table”以获取连接。 除此之外,我什么也没做。 同样,查询是可行的,但我无法获得便利。

想法?

最好。

似乎您遇到了大写问题-由于您的列是大写的,因此ActiveRecord将为您创建大写的属性。 如果您执行event.Point而不是event.point则第二个示例可能正确工作。 如果您更喜欢使用小写版本,则可以使用ActiveSupport中的alias_attribute:

alias_attribute :point, :Point
alias_attribute :timestamp, :Timestamp

...等等。

除了alias_attribute

如果您有权访问控制该远程数据库并可以进行更改的应用程序。

您可以使用ActiveResource,这是访问远程模型之类的非常干净的方法。

http://railscasts.com/episodes/94-activeresource-basics

http://railscasts.com/episodes/95-more-on-activeresource

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM