テスト結果を含む csv ファイルをインポートする mongoid を使用した Rails 4.2 アプリケーションがあります。モデル内のすべてのフィールドを定義することはできません。フィールドはテストごとに変化し、常に約 700 のフィールドがあるためです。動的属性を使用しており、インポートと表示は正常に機能します。
attribute_names メソッドを使用してすべての属性名を取得しようとしていますが、取得できるのはモデルで定義されているものだけです。モデルで何も定義しない場合、「_id」のみが返されます。一方、属性メソッドは、実際のドキュメントの属性を表示できます。
>> @results.first.attributes.count
=> 763
>> @results.first.attribute_names
=> ["_id"]
fields.keys も試しましたが、同じ問題です
>> @results.first.fields.keys
=> ["_id"]
現時点での私のモデルは次のようになります
class Result
include Mongoid::Document
include Mongoid::Attributes::Dynamic
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Result.create! row.to_hash
end
end
end
誰かがそれを機能させる方法を説明できますか?
どんな助けでも大歓迎です。