Tengo un modelo de usuario. Los usuarios pueden tener 1 de 3 roles: role1, role2, role3. Esto se representa mediante una columna de 'rol' en el modelo de usuario. Cada función tiene un perfil único. role1_profile, role2_profile, role3_profile. Cada * _profile es un modelo.Asociaciones de modelos opcionales o condicionales en Rails
¿Cómo puedo representar esta asociación opcional en Rails?
Lo he intentado dos maneras diferentes:
class User < ActiveRecord::Base
#FIRST WAY
if current_user.role == 'role1' then has_one :role1_profile end
#SECOND WAY
has_one :role1_profile, :conditions => ['user.role = ?', 'role1']
end
Pero eso no funciona. ¿Cuál es la forma correcta de hacer esto?
+1 porque era demasiado flojo para escribir el código. –
¡Gracias! Creo que tu solución es perfecta. Siempre hay un camino en Rails, pero cuando no conoces el camino, tiendes a implementar una solución de una manera extraña. – hrdwdmrbl
@jackquack No creo que tu enfoque fuera extraño en absoluto. Todo lo contrario, fue muy lógico. Y bien puede señalar un lugar donde ActiveRecord se puede mejorar/ampliar. De todos modos, me alegro de que las cosas funcionen. –