无法访问活动哈希中的数据



我正在使用Gem active_hashhttps://github.com/zilkey/active_hash为我不想创建DB表的简单数据创建模型。

例如,我有FieldTypes:的模型设置

class FieldType < ActiveHash::Base
self.data = [
{:id => 1, :name => "text", :friendly_name => "Text"},
{:id => 2, :name => "textarea", :friendly_ => "Text Area"},
{:id => 3, :name => "image", :friendly_ => "Image"},
]
end

我试图列出这些字段类型以供选择:

def field_types_for_select
#FieldType.all.order('name asc').collect { |t| [t.friendly_name, t.name] }
FieldType.pluck(:friendly_name, :name)
end

但我犯了一个错误,订单、收集或提取都没有定义。

如何访问这些数据?这在其他模型上运行良好,只是ActiveHash模型不适用。根据文档,该模型应该和ActiveRecord一样工作,但我似乎无法访问它。FieldType.all有效,但其他方法无效。

Pluck未在ActiveHash::Base上定义。它是在ActiveRecord::Relation::Calculations上定义的,其目的是为指定的列生成SQL选择。您将无法使它与ActiveHash一起工作。

但是,您可以在FieldType模型上定义自己的pluck

def self.pluck(*columns)
data.map { |row| row.values_at(*columns) }
end

或者直接查询数据:

FiledType.data.map { |row| row.values_at(:friendly_name, :name) }

最新更新