<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -31,20 +31,83 @@ Por otro lado, cuando el idioma utilizado no es ingl&#233;s es necesario evitar las
     rake db:migrate
     rake caracteristicas
 
-
 En este punto deber&#237;amos obtener dos errores, ambos debidos a que el *scaffold* genera las vistas en ingl&#233;s y el generador de *caracteristica* los espera en castellano. El primero es el bot&#243;n &quot;Create&quot; y el segundo el enlace &quot;Destroy&quot;:
 
     $EDITOR app/views/orchards/index.html.erb # &quot;Borrar&quot; en lugar de &quot;Destroy&quot;
     $EDITOR app/views/orchards/new.html.erb # &quot;Crear&quot; en lugar de &quot;Create&quot;
     rake caracteristicas
 
-Ahora s&#237;, los escenarios deber&#237;an ser v&#225;lidos, sin errores ni definiciones pendientes. Para tener precargado el entorno utilizando Spork bastar&#237;a con a&#241;adir ''--spork'' al ''script/generate cucumber'' y meter la opci&#243;n ''--drb'' dentro del profile y/o tarea de rake.
+Ahora s&#237;, los escenarios deber&#237;an ser v&#225;lidos, sin errores ni definiciones pendientes. Para tener precargado el entorno utilizando Spork bastar&#237;a con a&#241;adir ''--spork'' al ''script/generate cucumber'' y meter la opci&#243;n ''--drb'' dentro del profile y/o de la tarea de rake.
 
 El generador mundo_pepino nos prepara el entorno para utilizar las definiciones de MundoPepino sin copiarnos las mismas en ''features/steps_definitions'', carg&#225;ndolas directemente desde su c&#243;digo. Existe otro generador equivalente llamado **mundo_pepino_steps** que hace lo mismo pero copiando dichas definiciones dentro de ''features/steps_definitions''.
 
-La intenci&#243;n del generador de caracter&#237;sticas es m&#225;s did&#225;ctica que pragm&#225;tica. Ofrece un ejemplo simple que podemos toquetear para probar el plugin. Por otro lado se limita a hacer exactamente lo mismo que hace `generate feature` exceptuando el hecho de que no genera un fichero de **definiciones espec&#237;ficas** para la nueva *caracteristica* (ya que las utilizadas est&#225;n comprendidas dentro de las **definiciones gen&#233;ricas** ya implementadas en MundoPepino).
+La intenci&#243;n del generador de caracter&#237;sticas es m&#225;s did&#225;ctica que pragm&#225;tica. Ofrece un ejemplo simple que podemos toquetear para probar el MundoPepino. Por otro lado se limita a hacer exactamente lo mismo que hace `generate feature` de Cucumber, exceptuando el hecho de que no genera un fichero de **definiciones espec&#237;ficas** para la nueva *caracteristica* (ya que las utilizadas est&#225;n comprendidas dentro de las **definiciones gen&#233;ricas** ya implementadas en MundoPepino).
+
+El primer paso del primer escenario generado por ''caracteristica'' en el fichero ''features/gestion_de_huertos.feature'' es la siguiente:
+
+    Dado que visito la p&#225;gina de nuevo/a Huerto
+
+Para que MundoPepino sepa que cuando hablamos de //Huerto// nos estamos refiriendo al modelo //Orchard// es necesario realizar lo que llamamos un &quot;mapeo de modelo&quot;. El generador de hecho nos lo ha metido en ''mundo_pepino_es_ES.rb'':
+
+    MundoPepino.configure do |config|
+      config.model_mappings = {
+        /^huertos?$/i =&gt; Orchard
+      }
+      config.field_mappings = { ... }
+      config.url_mappings = { ... }
+    end
+
+De forma similar se pueden definir mapeos para los atributos (//field_mappings//, p.e ''/^usado$/i =&gt; :used'') y las rutas de la aplicaci&#243;n (//url_mappings//, p.e. ''/^la portada$/ =&gt; &quot;/&quot;'').
+
+Del mapeo de atributos lo m&#225;s destacable es la convenci&#243;n de que, si no se le indica lo contrario, el nombre del campo que guarda el //nombre// de cualquier modelo es **name**. Este mapeo nos permite escribir frases como ''Dado que tengo un usuario llamado &quot;Casimiro&quot;'' sin necesidad de hacer referencia al nombre del campo en el que debe guardarse //Casimiro//.
+
+Es recomendable para evitar problemas que los valores en el mapeo de atributos sean s&#237;mbolos en lugar de cadenas ya que algunas factorias (p.e. FixtureReplacement) los quieren as&#237;.
+
+Del mapeo de rutas cabe destacar que si MundoPepino detecta la presencia del **m&#233;todo ''path_to''** (creado actualmente por Cucumber al preparar el entorno) ignorar&#225; dicho mapeo y utilizar&#225; ''path_to'' para obtener las rutas a partir de las capturas en los textos.
+
+### Primera convenci&#243;n y como salt&#225;rsela: campo **name** para el //nombre// en todos los modelos
+
+Como acabamos de comentar:
+    
+    ''Dado que tengo un usuario llamado &quot;Casimiro&quot;''
+
+MundoPepino, por convenci&#243;n, intentar&#225; guardar &quot;Casimiro&quot; en el campo ''name'' del modelo contra el que est&#233; mapeado &quot;usuario&quot;. Vamos a tirar de imaginaci&#243;n y continuemos asumiendo que dicho modelo es ''User''.
+
+Si queremos saltarnos la convenci&#243;n y que &quot;Casimiro&quot; se guarde en el campo ''login'' tendremos que indicarlo con un mapeo de atributo similar al siguiente:
+
+    config.model_mappings = {
+      /^User::name$/ =&gt; :login
+    }
+
+Si lo que nos interesa es cambiar la convenci&#243;n globalmente, es decir, que siempre se utilice otro nombre de campo para el nombre, simplemente tendriamos que quitar el modelo y los dos dos puntos del mapeo anterior. Por ejemplo, si queremos que dicho nombre de campo fuese **title** ser&#237;a algo como:
+
+    config.model_mappings = {
+      /^name$/ =&gt; :title
+    }
+
+### Relaci&#243;n con modelo utilizando un nombre que no se corresponde con el mismo
+Con un ejemplo se entiende mejor, creo. Tenemos un modelo User y un modelo Garden y este &#250;ltimo &quot;belongs_to :author, class_name =&gt; 'User'&quot;, de tal forma que //a_garden.author// nos devuelve un User.
+
+Bien, pues para que la siguiente caracter&#237;stica funcione correctamente:
+
+    Dado que tenemos un usuario llamado &quot;Fidel&quot;
+       Y que tenemos un jard&#237;n cuyo autor es &quot;Fidel&quot;
+
+Tengo que meter los siguentes mapeos en nuestro entorno:
+* En el mapeo de modelos (model_mappings):
+
+    /^autor(es)?$/i =&gt; User
+
+* En el mapeo de campos (field_mappings):
+
+    /^autor(es)?$/i =&gt; :author
+
+* Un mapeo adicional entre el nombre del campo en ingl&#233;s y su modelo asociado (relation_model_mappings):
+
+    'author' =&gt; User
+
+Con estos mapeos tambi&#233;n deber&#237;an funcionar el resto de definiciones de MP en las que se haga referencia a una relaci&#243;n.
 
-Dentro del c&#243;digo de MundoPepino, en `features/support/app` est&#225; la aplicaci&#243;n que el MundoPepino utiliza para probarse a si mismo. En particular la caracter&#237;stica `features/mundo-pepino.feature` pretente ser un compendio de escenarios que muestren las posibilidades que ofrece.
 
 ## Instalaci&#243;n
 
@@ -232,29 +295,6 @@ El fichero `gestion_de_huertos.feature` tendr&#237;a:
 
 A diferencia de `generate feature` aqu&#237; no se crea un fichero `step_definitions.rb` con definiciones e implementaciones espec&#237;ficas ya que las mismas se encuentran dentro de las tratadas gen&#233;ricamente dentro del MundoPepino.
 
-### Relaci&#243;n con modelo utilizando un nombre que no se corresponde con el mismo
-Con un ejemplo se entiende mejor, creo. Tenemos un modelo User y un modelo Garden y este &#250;ltimo &quot;belongs_to :author, class_name =&gt; 'User'&quot;, de tal forma que //a_garden.author// nos devuelve un User.
-
-Bien, pues para que la siguiente caracter&#237;stica funcione correctamente:
-
-    Dado que tenemos un usuario llamado &quot;Fidel&quot;
-       Y que tenemos un jard&#237;n cuyo autor es &quot;Fidel&quot;
-
-Tengo que meter los siguentes mapeos en nuestro entorno:
-* En el mapeo de modelos (model_mappings):
-
-    /^autor(es)?$/i =&gt; User
-
-* En el mapeo de campos (field_mappings):
-
-    /^autor(es)?$/i =&gt; :author
-
-* Un mapeo adicional entre el nombre del campo en ingl&#233;s y su modelo asociado (relation_model_mappings):
-
-    'author' =&gt; User
-
-Con estos mapeos tambi&#233;n deber&#237;an funcionar el resto de definiciones de MP en las que se haga referencia a una relaci&#243;n.
-
 ## Definiciones implementadas en MundoPepino
 
 **Cada definici&#243;n** existente en MundoPepino tiene **al menos un escenario** que comprueba:
@@ -268,9 +308,9 @@ Para todos los escenarios podr&#237;amos tener una narrativa gen&#233;rica que expresase
       Como usuario de Cucumber
       Quiero tener los pasos m&#225;s habituales definidos, implementados y bien documentados
 
-Cada definici&#243;n ha sido separada en un fichero `.feature` espec&#237;fico para poder enlazarlas desde este &#237;ndice.
+Cada definici&#243;n ha sido separada en un fichero `.feature` espec&#237;fico para poder enlazarlas con //markdown// desde este README. La caracter&#237;stica `features/mundo-pepino.feature` pretente ser todo lo contrario, un compendio de escenarios que muestren las posibilidades que ofrece m&#225;s alla de una definici&#243;n concreta (la aplicaci&#243;n que MundoPepino utiliza para correr estos tests se encuentra en `features/support/app`). 
 
-Como **convenci&#243;n general** los nombres correspondientes a modelos y campos pueden ir sin comillas pero los valores deben ir entre comillas (simples o dobles). Por ejemplo:
+Como **convenci&#243;n general**, aunque MundoPepino pretende ser lo m&#225;s flexible posible en general, y con las comillas en particular, los nombres correspondientes a modelos y campos pueden ir sin comillas pero los valores deben ir entre comillas (simples o dobles). Por ejemplo:
 
     Dado que tenemos un art&#237;culo que tiene como t&#237;tulo &quot;T&#237;tulo del art&#237;culo&quot;
 </diff>
      <filename>README_es.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -44,7 +44,7 @@ module MundoPepino
         attribs = Hash.new
         attributes.each do |key, value|
           if child_model = (key.to_s.to_model || key.to_s.to_relation_model)
-            child = add_resource(child_model, field_for(child_model, 'nombre') =&gt; value)
+            child = add_resource(child_model, field_for(child_model) =&gt; value)
             field_name = key.to_s.to_relation_model ? key : child_model.name.underscore
             attribs[&quot;#{field_name}_id&quot;] = child.id
           else</diff>
      <filename>lib/mundo_pepino/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@ module MundoPepino
         /^tru(e|th)$/i  =&gt; true,
         /^false$/i       =&gt; false
       }) { |value| value }  # &quot;true&quot;.to_real_value # =&gt; true
-      String.add_mapper(:field, {:nombre =&gt; :name})
+      String.add_mapper(:field)
     
       String.add_mapper(:number, { 
         /^an?$/i    =&gt; 1,</diff>
      <filename>lib/mundo_pepino/en_US/mappings.rb</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ module MundoPepino
     def then_we_have_a_number_of_instances_in_our_database(raw_number, raw_model, name)
       model = raw_model.to_unquoted.to_model
       conditions = if name
-        {:conditions =&gt; [ &quot;#{field_for(model, 'nombre')}=?&quot;, name ]}
+        {:conditions =&gt; [ &quot;#{field_for(model)}=?&quot;, name ]}
       else
         {}
       end</diff>
      <filename>lib/mundo_pepino/implementations.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ module MundoPepino
     def names_for_simple_creation(model, number, name_or_names, options = {})
       base_hash = base_hash_for(options)
       if name_or_names
-        field = field_for(model, 'nombre')
+        field = field_for(model)
         names = name_or_names.split(/ ?, | y /)
         if names.size == number
           names.map { |name| base_hash.dup.merge(field =&gt; name) }
@@ -19,8 +19,16 @@ module MundoPepino
       end
     end
   
-    def field_for(model, campo = 'nombre')
-      &quot;#{model &amp;&amp; model.name}::#{campo}&quot;.to_field || campo.to_field
+    def field_for(model=nil, field = nil)
+      model_name = &quot;#{model &amp;&amp; model.name+'::'}&quot;
+      if field
+        &quot;#{model_name}#{field}&quot;.to_field || field.to_field
+      else
+        # The use of &quot;nombre&quot; the name field mapping is deprecated
+        &quot;#{model_name}nombre&quot;.to_field || 'nombre'.to_field || 
+        # &quot;Model::name&quot; or &quot;name&quot; (for a global mapping) is the right use.
+        &quot;#{model_name}name&quot;.to_field || 'name'.to_field || :name
+      end
     end
 
     def shouldify(should_or_not)</diff>
      <filename>lib/mundo_pepino/implementations_api.rb</filename>
    </modified>
    <modified>
      <diff>@@ -90,7 +90,7 @@ module MundoPepino
   
     def add_resource_from_database(modelo, nombre)
       model = modelo.to_unquoted.to_model
-      field = field_for(model, 'nombre')
+      field = field_for(model)
       if resource = model.send(&quot;find_by_#{field}&quot;, nombre)
         pile_up resource
       else
@@ -165,7 +165,7 @@ module MundoPepino
         arr.detect { |r| r.respond_to?(method) &amp;&amp; r.send(method, value) }
       elsif value.is_a? Array
         model, val = value # [ class, value ]
-        name_field = field_for(model, 'nombre')
+        name_field = field_for(model)
         arr.detect do |r| 
           r.respond_to?(:is_a?) &amp;&amp; r.is_a?(model) &amp;&amp; r.send(name_field) =~ /#{val}/i
         end
@@ -187,7 +187,7 @@ module MundoPepino
         [[ mentioned ], [ valor ]]
       end
       field, values = if (child_model = campo.to_model)
-        child_name_field = field_for(mentioned.mr_model, 'nombre')
+        child_name_field = field_for(mentioned.mr_model)
         values = add_resource(child_model,
           valores.map { |val| { child_name_field =&gt; val } })
         values = [ values ] unless values.is_a?(Array)</diff>
      <filename>lib/mundo_pepino/resources_history.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,13 +16,13 @@ MundoPepino.configure do |config|
 
   config.field_mappings = {
     # TRADUCCI&#211;N DE CAMPOS AQU&#205;:
-    # /^[&#193;&#225;a]reas?$/i    =&gt; 'area',
-    # /^color(es)?$/i   =&gt; 'color',
-    # /^latitud(es)?$/i =&gt; 'latitude',
-    # /^longitud(es)?/i =&gt; 'length'
+    # /^[&#193;&#225;a]reas?$/i    =&gt; :area,
+    # /^color(es)?$/i   =&gt; :color,
+    # /^latitud(es)?$/i =&gt; :latitude,
+    # /^longitud(es)?/i =&gt; :length
     #
     # TRADUCCI&#211;N ESPEC&#205;FICA PARA UN MODELO
-    # /^Orchard::longitud(es)?$/   =&gt; 'longitude'
+    # /^Orchard::longitud(es)?$/   =&gt; :longitude
   }
 end
 </diff>
      <filename>rails_generators/mundo_pepino/templates/mundo_pepino_es_ES.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a8d28dea4df16ef25efcc2291b7af34b66050050</id>
    </parent>
  </parents>
  <author>
    <name>Nando</name>
    <email>fernando.garcia@the-cocktail.com</email>
  </author>
  <url>http://github.com/nando/mundo-pepino/commit/75d5d7b774854f78af46498345e3a20ffa816771</url>
  <id>75d5d7b774854f78af46498345e3a20ffa816771</id>
  <committed-date>2009-11-06T13:07:00-08:00</committed-date>
  <authored-date>2009-11-06T13:07:00-08:00</authored-date>
  <message>'name' is the literal to map for name field ('nombre' is now deprecated)</message>
  <tree>456b821849ed220d3d8d15977c20fa0e015f9970</tree>
  <committer>
    <name>Nando</name>
    <email>fernando.garcia@the-cocktail.com</email>
  </committer>
</commit>
