Pregunta

Una pregunta un poco para novatos sobre las asociaciones ferroviarias.

Tengo un modelo Bug y un modelo Status.El estado es básicamente una tabla de pares clave/valor.De las opciones disponibles, diría que Bug has_one Status tiene más sentido.Sin embargo, según este

El contenido pertenece_a ContentTemplate.Regrese y mira cómo describí el problema, y ​​verá que funciona.Con belongs_to, la tabla acepta responsabilidad de la clave externa.Así que El contenido tiene un content_template_id.Y ContentTemplate no necesita nada.Puedo señalarlo a voluntad.Hecho.

El error pertenece_al estado sería más apropiado (ya que el error debería tomar la clave externa).Semánticamente, su ejemplo tiene sentido, pero el mío no.¿Es esto solo una peculiaridad de los rieles que en esta situación parece extraño, o no entiendo algo o no lo estoy haciendo mal?

¿Fue útil?

Solución

Sí, creo que se acaba de encontrar un escenario poco extraño de aspecto en Rails. Supongo que podría ser útil para ver "estado" como una especie de categoría a la que pertenece el error - en el que la luz, tiene sentido

.

Otros consejos

TABLE:
    Bug
    id integer
    desc string
    status_id integer fk

    Status
    id integer
    desc string

RAILS MODEL:
    Bug
    belongs_to :status

    Status
    has_many :bugs

no explicó con precisión qué tipo de relación entre el insecto y el estado que le gustaría conseguir, pero supongo que está interesado en uno de los siguientes:

  • -uno-a-muchos: en este caso no debe has_many en clase Bug y belongs_to en la clase de estado,
  • uno-a-uno:. En este caso no se debe has_one en clase Bug y belongs_to en la clase de estado

En ambos casos de estado contiene la clave externa. En el segundo caso, la formulación es un poco extraño, debido al hecho de que uno-a-uno relación es de hecho asimétrica (debe haber un FK en un solo lado).

Si el estado es sólo una tabla de consulta / clave-valor, parece que es posible que desee un HABTM relación (has_and_belongs_to_many) entre Estado e insecto. Con HABTM, lo que va a terminar con un bugs_statuses es unirse tabla que tiene columnas bug_id y status_id junto con sus errores y estados de tablas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top