我的一个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
仅供参考,当我生成模型时,我只运行“脚本/生成模型事件”而绝对没有别的。然后我在模型中使用“establish_connection”和“set_table”来获得连接。除此之外,我什么也没做。再次,查询工作,但我不方便访问。
想法?
最佳。
答案 0 :(得分:2)
看起来你有大写问题 - 因为你的列是大写的,ActiveRecord会为你创建大写的属性。如果您执行event.Point
而非event.point
,则第二个示例可能会正常运行。如果您更喜欢使用小写版本,则可以使用ActiveSupport中的alias_attribute:
alias_attribute :point, :Point
alias_attribute :timestamp, :Timestamp
...等
答案 1 :(得分:0)
除了alias_attribute
如果您有权访问控制该远程数据库并可以进行更改的应用程序。
您可以使用ActiveResource,这是访问远程模型等非常干净的方式。