gpt4 book ai didi

ruby-on-rails - 将 PG::Result 转换为 Active Record 模型

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:32 26 4
gpt4 key购买 nike

pg-ruby 允许您一次性向数据库发送多个查询,这有助于最大限度地减少访问数据库的次数:

results = []
conn.send_query('QUERY1;QUERY2;QUERY3')
conn.block
while result = conn.get_result
results << result
end

假设对于任何result 我已经知道 Active Record 模型,将结果转换为模型的合适方法是什么?现在我正在做以下事情:

fields = result.fields
models = result.values.map { |value_set|
Model.new(Hash[fields.zip(value_set)])
}

该方法的问题在于,每个 Active Record 对象似乎都不是 #persisted?,因为它们是用 .new 实例化的。

最佳答案

我想你想要的是 ActiveRecord::Base.instantiate方法。它将正确处理 new_record?/persisted? 问题,并为单表继承找到正确的类。

例如:

fields = result.fields
models = result.values.map { |value_set|
Model.instantiate(Hash[fields.zip(value_set)])
}

关于ruby-on-rails - 将 PG::Result 转换为 Active Record 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30826015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com