【发布时间】:2014-05-19 03:08:20
【问题描述】:
Ruby 2.1.0/Rails 4.0.2
我有一个总线模型和一个集群模型。它们如下所示:
class Bus < ActiveRecord::Base
has_many :left_centroids, class_name: "Centroid"
has_many :right_centroids, class_name: "Centroid"
end
class Centroid < ActiveRecord::Base
belongs_to :bus
end
Bus 也有一个方法,基本上是 KMeans 算法,所以我运行它来替换旧的 left_centroids,然后替换 right_centroids。 Right 和 Left 在 Centroid Model 中给定字段的值不同。
我尝试通过简单的设置来保存它们:@bus.left_centroids = centroids_for_algorithms 和update_attributes。但是每当我保存一个时,比如 left,right 就会被 left 的值覆盖,反之亦然,这在我的应用程序上下文中毫无意义。
我错过了什么吗?
更新:运行 K 均值算法(来自 ai4r gem,cmets 中的链接)后,我收集质心
def algorithm(direction)
clusters = k_means_algorithm_part
centroids_to_add_to_bus = Centroid.limit 0
clusters.centroids.each do |centroid|
cent = Centroid.create(
:latitude => centroid[0].to_d,
:longitude => centroid[1].to_d,
:catch_time => centroid[2],
:direction => direction,
:bus_id => bus_id
)
centroids_to_add_to_bus.append cent
end
bus = Bus.find(bus_id)
if direction
bus.right_centroids = centroids_to_add_to_bus
else
bus.left_centroids = centroids_to_add_to_bus
end
end
【问题讨论】:
-
能把你说的算法贴出来吗?
-
我正在使用 ai4r gem,算法的详细信息可以在这里找到ai4r.org/rdoc/index.html。但是,我之前尝试过该算法,这是我第一次遇到这个问题。我将使用一些自定义代码进行更新(很可能是问题的根源)
标签: ruby-on-rails-4 associations rails-activerecord has-many