tengo un modelo con los meses del año y otro donde debo registrar un mes
inicial y un mes final, la vista me guarda bien, pero cuando quiero
mostrarlo en el show, siempre me trae el rango superior del mes. como
puedo corregir esto?
class Mes < ActiveRecord::Base
has_many :aportes, :class_name => ‘Mes’, :foreign_key => ‘mesi_id’
has_many :aportes, :class_name => ‘Mes’, :foreign_key => ‘mesf_id’
end
class Aporte < ActiveRecord::Base
belongs_to :mes, :foreign_key => ‘mesi_id’
belongs_to :mes, :foreign_key => ‘mesf_id’
end
SerÃa importante que los atributos de los modelos no tengan el mismo
nombre.
Estás definiendo y redefiniendo acto seguido por lo que la segundo
definición está machacando a la primera y en ningún momento vas a usar
el
campo ‘mesi_id’ para almacenar.
Un saludo,
Juan
El primer parámetro del belongs_to es el nombre de la asociación. Por
convenio, cuando estás en un belongs_to por ejemplo, si usas como nombre
de asociación el del modelo de destino, rails busca solito la clase con
la que enganchar y la clave ajena correspondiente. En tu caso, como
tienes varias asociaciones al mismo modelo y se deben llamar distinto a
la clase de destino, hay que especificarle la clase con la que asociarse
asà como la clave que usar.
Te aconsejo que eches un vistazo a las rails guides, que están muy bien
y explican esto perfectamente:
hice lo sugerido de Jesus y me funciono, pero tengo ganas de aplicar lo
que me sugiere Guillermo, aunque se requiere en digitar en la vista son
un rango de meses, ej: pago desde mes_inicial a mes_final y no quiero
que tengan que seleccionar o ingresar los dias, pero es valido.
date_select(object_name, method, options = {}, html_options = {})
:discard_day - Set to true if you don‘t want to show a day select.
This
includes the day as a hidden field instead of showing a select field.
Also
note that this implicitly sets the day to be the first of the given
month in
order to not create invalid dates like 31 February.
:discard_year - Set to true if you don‘t want to show a year select.
This
includes the year as a hidden field instead of showing a select field.
–
Guillermo Ãlvarez
Sent from Madrid, Comunidad de Madrid
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.