【发布时间】:2016-01-07 07:31:27
【问题描述】:
我创建了两个具有以下定义的模型
class TrendGraph < ActiveRecord::Base
acts_as_paranoid
has_many :trends
end
class Trend < ActiveRecord::Base
acts_as_paranoid
end
现在我正在尝试提取每个图表的数据以及相关的趋势数据。我正在使用以下查询
@trendGraphs = TrendGraph.where("column=?",@someValue).all.includes(:trends)
但我在@trendGraphs 中得到的只是趋势图表数据,而不是趋势表中的相关数据。我需要的是下面的东西
TrendGraphData1:{key1:"value1",key2:"value2",trends:[{trendk1:"trendvalue1"},{trendk2:"trendvalue2"}]}
我能够使用 laravel 中的 with 子句来实现这一点,并且只是从 laravel 转移到 ROR 。谁能帮我告诉我做错了什么以及如何实现?
提前致谢。
【问题讨论】:
-
您可以使用@trendGraph.trends 访问您的图表,使用trendGraph 集合的项目,但是如果您想要此数据的另一种表示,可能您需要找到其他ORM 模式,例如DAO,或者您一些一种序列化器。因为 AR,正如有人说的反模式,所以对它的查询将只返回该模型表的行
-
我可以使用@trendGraphs.trends 访问它们,但是有没有办法可以将趋势表中的所有相关数据作为嵌入到 TrendGraph AR 对象中的集合来获取?或者正如你所说,我需要使用一些 ORM 模式来实现这一点?
-
你可以创建一个像@trendGraph.to_json(include: :trends)这样的json对象。但是对于复合 AR 对象,您需要使用 sth else
标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord model-associations