Modifications of the user model
This commit is contained in:
parent
1909edbe2a
commit
509c106b3e
|
@ -21,6 +21,14 @@ class Panel::UsersController < ApplicationController
|
||||||
def create
|
def create
|
||||||
@user = User.new(params[:user])
|
@user = User.new(params[:user])
|
||||||
if @user.save
|
if @user.save
|
||||||
|
@user.user_infos.each do |user_info|
|
||||||
|
user_info.save
|
||||||
|
user_info.attribute_values.each(&:save)
|
||||||
|
end
|
||||||
|
@user.user_roles.each do |user_role|
|
||||||
|
user_role.save
|
||||||
|
user_role.attribute_values.each(&:save)
|
||||||
|
end
|
||||||
flash[:notice] = t('panel.create_success_user')
|
flash[:notice] = t('panel.create_success_user')
|
||||||
redirect_to :action => :index
|
redirect_to :action => :index
|
||||||
else
|
else
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
class AttributeValue
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :key
|
||||||
|
|
||||||
|
belongs_to :user_attribute
|
||||||
|
|
||||||
|
end
|
|
@ -10,8 +10,8 @@ class User
|
||||||
field :admin, :type => Boolean, :default => true
|
field :admin, :type => Boolean, :default => true
|
||||||
field :active_roles, :type => Array
|
field :active_roles, :type => Array
|
||||||
|
|
||||||
embeds_many :user_roles
|
has_many :user_roles
|
||||||
embeds_many :user_infos
|
has_many :user_infos
|
||||||
before_save :clean_active_roles
|
before_save :clean_active_roles
|
||||||
|
|
||||||
# Update or create the user_role records
|
# Update or create the user_role records
|
||||||
|
@ -26,6 +26,18 @@ class User
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Update or create the user_info records
|
||||||
|
def user_infos=(*attrs)
|
||||||
|
attrs[0].each do |infos|
|
||||||
|
if infos[:id].blank?
|
||||||
|
user_infos.build(infos)
|
||||||
|
else
|
||||||
|
user_info = user_infos.detect {|a| a.id.to_s == infos[:id].to_s }
|
||||||
|
user_info.update_attributes(infos)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Get an user_info from model key
|
# Get an user_info from model key
|
||||||
def get_info_from_model_key(key)
|
def get_info_from_model_key(key)
|
||||||
self.user_infos.detect {|a| a.key.to_s == key.to_s }
|
self.user_infos.detect {|a| a.key.to_s == key.to_s }
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
class UserAttribute
|
||||||
|
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
field :key
|
||||||
|
has_many :attribute_values
|
||||||
|
|
||||||
|
# Update or create the attribute_value records
|
||||||
|
def attributes=(*args)
|
||||||
|
args[0].each do |value|
|
||||||
|
if value[:id].blank?
|
||||||
|
attribute_values.build(value)
|
||||||
|
else
|
||||||
|
attribute_value = attribute_values.detect {|a| a.id.to_s == value[:id].to_s }
|
||||||
|
attribute_value.update_attributes(value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,10 +1,5 @@
|
||||||
class UserInfo
|
class UserInfo < UserAttribute
|
||||||
|
|
||||||
include Mongoid::Document
|
belongs_to :user
|
||||||
include Mongoid::Timestamps
|
|
||||||
|
|
||||||
field :key
|
|
||||||
|
|
||||||
embedded_in :user, :inverse_of => :user_infos
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
class UserRole
|
class UserRole < UserAttribute
|
||||||
|
|
||||||
include Mongoid::Document
|
belongs_to :user
|
||||||
include Mongoid::Timestamps
|
|
||||||
|
|
||||||
field :key
|
|
||||||
|
|
||||||
embedded_in :user, :inverse_of => :user_roles
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,20 +13,24 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<% ua.attribute_models.each do |attr| %>
|
<% ua.attribute_models.each do |attr| %>
|
||||||
|
<% value = user_attribute.attribute_values.detect{|v| v.key == attr.key } %>
|
||||||
|
<%= hidden_field_tag "user[user_#{type}s][][attributes][][id]", value.id rescue nil %>
|
||||||
|
<%= hidden_field_tag "user[user_#{type}s][][attributes][][key]", attr.key %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= attr.i18n_variable[I18n.locale] %></td>
|
<td><%= attr.i18n_variable[I18n.locale] %></td>
|
||||||
<% if attr["locale"] && attr["markup"] == 'text_field' %>
|
<% if attr["locale"] && attr["markup"] == 'text_field' %>
|
||||||
|
<%= hidden_field_tag "user[user_#{type}s][][attributes][][non_locale]", nil %>
|
||||||
<% @site_valid_locales.each do |locale| %>
|
<% @site_valid_locales.each do |locale| %>
|
||||||
<td>
|
<td>
|
||||||
<%= text_field_tag "user[user_#{type}s][][#{attr.key}_#{locale}]", (user_attribute["#{attr.key}_#{locale}"] rescue nil) %>
|
<%= text_field_tag "user[user_#{type}s][][attributes][][#{locale}]", (value[locale] rescue nil) %>
|
||||||
</td>
|
</td>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<% else %>
|
<% else %>
|
||||||
<td colspan=<%= @site_valid_locales.size %>>
|
<td colspan=<%= @site_valid_locales.size %>>
|
||||||
<% if attr["markup"] == "text_field" %>
|
<% if attr["markup"] == "text_field" %>
|
||||||
<%= text_field_tag "user[user_#{type}s][][#{attr.key}]", (user_attribute[attr.key] rescue nil) %>
|
<%= text_field_tag "user[user_#{type}s][][attributes][][non_locale]", (value['non_locale'] rescue nil) %>
|
||||||
<% elsif attr["markup"] == "select" %>
|
<% elsif attr["markup"] == "select" %>
|
||||||
<%= select_tag "user[user_#{type}s][][#{attr.key}]", options_for_select(attr["options"], user_attribute[attr.key]) %>
|
<%= select_tag "user[user_#{type}s][][attributes][][non_locale]", options_for_select(attr["options"], value['non_locale']) %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</td>
|
</td>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
Reference in New Issue