model languages skills with ruby on rails and mongodb -


i'm starting learn ror , mongodb. started creating simple cv application users specify level of expertise consider in given language (between 1 - 5). language collection

languages collection

{     {id:a1, language:"english", status:active},     {id:a2, language:"spanish", status:inactive} } 

user collection

{    {id:u1, name:"user name", languages:{{id:a1, skill:4},{id:a2, skill:3}}},    {id:u2, name:"mac link", languages:{{id:a1, skill:2},{id:a2, skill:5}}} } 

i don't know how model ror , mongodb because need load languages collection default , put select box choose skill level. after loading everything, user select skill level , then, save. language not saved, (it save model).

if give me guidance, appreciated.

multiple approaches can used, instance

the general idea, languages , users loaded separately. if need languages, displayin purposes (language name kept in languages collection), use mapping proposed @ end. if more sophisticated logic needed, put somewhere in service layer

hope helps.

class languagesrepo   def load_language_mapping     languages = mongo_client.search({}).to_a #will array languages      languages.inject({}) |memo, current_language|       memo[current_language['id']] = current_language     end   # result hash { 1 => { 'id' => 1, 'language': 'english'} }   end  end  class user     class language         include activemodel::model      attr_accessor :id, :skill end  include activemodel::model  attr_accessor :id, :name, :languages end  class userrepo   def load_user(id)     json = mongo_client.query(id: id)     usermongoparser.new(json).parse #will return filled user instance   end  def save_user(user)     mongo_client.update({id: user.id}, user.as_json) #depending on client use     #or     mongo_client.update({id: user.id}, usermongoserializer.new(user).serialize) #depending on client use end 

end

somewhere in haml/erb user form file

%ul     user_form.languages.each |language_item|         %li             = user_form.hidden_field :id             = user_form.label :skill, @languages_mapping[language_item.id]['name'] #will display language name label             = user_form.text_field :skill 

Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -