我试图在Rails4中应用这个内联视图技巧https://gist.github.com/jturkel/7917985#file-inline_view_model-rb。但是我的视图中有一列将返回一个由postgresql的构建函数array_agg()
生成的数组。
class Product < ActiveRecord::Base
defult_scope { set_from_clause }
def self.set_from_clause
query = Product.joins(:tags)
.group("products.id")
.select("products.id", "Array_agg('tags.id') AS tag_ids")
from(query, table_name)
end
def self.columns
[
ActiveRecord::ConnectionAdapters::Column.new('product_id', nil, ActiveRecord::Type::String.new),
ActiveRecord::ConnectionAdapters::Column.new('tag_ids', nil, ActiveRecord::Type::Integer.new),
]
end
end
这个示例代码不起作用,因为Array_agg
返回的值不能正确地进行类型转换。我想知道是否有一种方法可以使这个技巧在示例中的tag_ids
上起作用。
1条答案
按热度按时间jgzswidk1#
使用
json_agg
代替array_agg
,然后使用JSON.parse
方法解析它。