0

我的一个 Rails 模型有一点问题。这不是我无法解决的问题(因为我已经这样做了),但我对实际问题很感兴趣。

基本上,我有一个名为“Events”的基于 ActiveRecord 的类,我使用“establish_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

仅供参考,当我生成模型时,我只运行“脚本/生成模型事件”,完全没有别的。然后我在模型中使用了“建立连接”和“设置表”以获得连接。除此之外,我什么也没做。同样,查询有效,但我无法方便地访问。

想法?

最好的。

4

2 回答 2

2

看起来您遇到了大写问题 - 由于您的列是大写的,ActiveRecord 将为您创建大写的属性。如果您这样做,您的第二个示例可能会正常工作,event.Point而不是event.point. 如果您更喜欢使用小写版本,您可以使用来自 ActiveSupport 的 alias_attribute:

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

...ETC。

于 2009-06-09T05:56:52.097 回答
0

除了 alias_attribute

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

您可以使用 ActiveResource,这是一种非常简洁的访问远程模型之类的方法。

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

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

于 2009-06-09T07:42:41.023 回答