さまざまなイベントとそのステータスを追跡するRailsアプリケーションに取り組んでいます。
これが私のStatus
モデルです:
class Status < ActiveRecord::Base
attr_accessible :value
has_many :events
end
追加のステータスタイプを追加するためのインターフェイスがあります。
私のEvent
モデルは次のようになります。
class Event < ActiveRecord::Base
attr_accessible :status_id
belongs_to :status
class << self
Status.all.each do |status|
define_method(status.value.downcase) do
send("where", :status_id => Status.find_by_value(status.value.downcase))
end
end
end
end
たとえば、3つの異なるステータス値があります:、、、Outage
など。Slow
Error
これで私はできる:
Event.outage
また:
Event.slow
そして、私はActiveRecord::Relation
そのステータスのすべてのイベントのを取り戻します。これは期待どおりに機能します。
Highchartsを使用して動的にいくつかのグラフを生成するビューがあります。これが私のビューコードです:
<script type="text/javascript" charset="utf-8">
$(function () {
new Highcharts.Chart({
chart: { renderTo: 'events_chart' },
title: { text: '' },
xAxis: { type: 'datetime' },
yAxis: {
title: { text: 'Event Count' },
min: 0,
tickInterval: 1
},
series:[
<% { "Events" => Event,
"Outages" => Event.outage,
"Slowdowns" => Event.slow,
"Errors" => Event.error,
"Restarts" => Event.restart }.each do |name, event| %>
{
name: "<%= name %>",
pointInterval: <%= 1.day * 1000 %>,
pointStart: <%= @start_date.to_time.to_i * 1000 %>,
pointEnd: <%= @end_date.to_time.to_i * 1000 %>,
data: <%= (@start_date..@end_date).map { |date| event.reported_on(date).count}.inspect %>
},
<% end %>]
});
});
</script>
<div id="events_chart"></div>
Status
データベースからのタイプのリストを使用して、このハッシュを動的に生成したいと思います。
<% {
"Outage" => Event.outage,
"Slow" => Event.slow,
"Error" => Event.error,
"Restart" => Event.restart }.each do |name, event|
%>
このようなものを使用して:
hash = Status.all.each do |status|
hash.merge("#{status.value}" => Event) ||= {}
end
each
ハッシュを呼び出してチャートを生成したいと思います。ただし、これはハッシュを提供しませんが、それ自体Array
と同じように、ハッシュを提供Status.all
します。