Я изучаю MongoDB через драгоценный камень Mongoid Ruby с направляющими (Направляющие 3 беты 3), и я пытаюсь придумать способ создать динамические атрибуты на основанном на модели на полях из другой модели, которая я думал, что бессхемная база данных будет хорошим выбором для.
Так, например, у меня были бы модели:
class Account
include Mongoid::Document
field :name, :type => String
field :token, :type => String
field :info_needed, :type => Array
embeds_many :members
end
class Member
include Mongoid::Document
embedded_in :account, :inverse_of => :members
end
Я надеюсь брать "info_needed" атрибут модели Account и создал динамические атрибуты на участнике, основанном на модели на том, что внутри. Если бы клуб info_needed был ["first_name", "last_name"], я пытаюсь создать форму, которая сохранила бы first_name, и last_name приписывает членской модели.
Однако на практику, я просто продолжаю получать "неопределенный метод first_name =" ошибки на членской модели при попытке сделать это. Я знаю, что MongoDB может обработать динамические атрибуты на запись, но как я могу заставить Mongoid делать это без ошибки неопределенного метода?
Mongoid на самом деле не поддерживает его.
Я сам случайно спросил об этом в группе Mongoid.
Это возможно при создании нового документа, например:
account = Account.new (: some_dynamic_field => "...")
Не забудьте установить allow_dynamic_fields: true
в mongoid.yml
. Пример:
defaults: &defaults
allow_dynamic_fields: true
parameterize_keys: true
persist_in_safe_mode: true
raise_not_found_error: true
reconnect_time: 3
use_object_ids: false
development:
<<: *defaults
...