Ruby on rails 如何使选择内容成为Rails模型的属性
我甚至很难确定我想要回答的问题,所以我的情况如下: 我正在尝试使用我在别处填充的现有数据库制作一个简单的股市绘图仪工具。我的应用程序已经有了一个很好的动态绘图仪,可以与任何数据库一起工作,但它需要以某种方式获得数据。假设我的模型(数据库)如下所示:Ruby on rails 如何使选择内容成为Rails模型的属性,ruby-on-rails,ruby,model,attributes,Ruby On Rails,Ruby,Model,Attributes,我甚至很难确定我想要回答的问题,所以我的情况如下: 我正在尝试使用我在别处填充的现有数据库制作一个简单的股市绘图仪工具。我的应用程序已经有了一个很好的动态绘图仪,可以与任何数据库一起工作,但它需要以某种方式获得数据。假设我的模型(数据库)如下所示: Stock: |___ticker___|___open___|___close___|___date___| | aapl | 100 | 101 | 1/1/11 | | aapl | 10
Stock:
|___ticker___|___open___|___close___|___date___|
| aapl | 100 | 101 | 1/1/11 |
| aapl | 101 | 102 | 1/2/11 |
| goog | 500 | 450 | 1/1/11 |
| goog | 450 | 451 | 1/2/11 |
...
我的绘图仪例程使用与数据库中的列相对应的类属性(我认为这是术语)
我可以选择与'aapl'
相对应的所有数据,并轻松绘制打开
和关闭
与日期
的对比图,因为我的模型已经说明了属性
@stock = Stock.select_by_ticker('aapl')
>> @stock.open #=> 100 ...
>> @stock.close #=> 101 ...
>> @stock.date #= 1/1/11 ...
因此,属性将是
{open, close, date}
但是如果我想比较不同股票的收盘价,我需要每个股票的属性。因此,基本上,我希望最终得到一个以股票代码名称作为属性的模型,每个属性对应于数据库中股票代码的大块。使用易于构建的作用域,我需要如下内容:
@stock = Stock.select_close_by_ticker('aapl','goog')
属性包括:
{aapl, goog, date}
其中aapl和goog仅包含该股票代码的收盘价数据。如果需要,我可以运行多个数据库查询,现在我只想能够将数据排序到这个表单中。而且,它必须是完全动态的,所以我不能硬编码'aapl'
,'goog'
和所有其他数以百万计的股票代码到我的模型中 您希望:
stocks = ['appl', 'goog']
Stock.find(:conditions => ['ticker in (?)'], stocks)
为您的场景工作?用于选择数据,但问题是,这会为您提供一个标记字段。我想使我的模型的'aapl'和'goog'属性都包含相应的数据集(想想数据库中的行),一旦选择了数据,就可以对其进行迭代并将其转换为另一个数据结构。你想得到这样的结果:{:aapl=>150,:goog=>100},其中数字是收盘价吗?这可能是个好主意!这里的散列几乎与原始数据结构一样。。。我将尝试一下,我开发了一些可以创建散列的东西,但是对于更大或更复杂的数据集,在项目中的其他地方实现会变得更复杂。一切都是在Plot类之外进行的,创建更复杂的散列会使事情进一步复杂化。我想如果这就是我要做的,我就能想出办法。我仍然想修改原始的@plot数据结构。