rubyonrails rails migrations includes guides column association ruby-on-rails self-reference

ruby-on-rails - migrations - rails association methods



¿Cómo puedo hacer una auto-referencia con rubí sobre rieles? (4)

Quiero referirme a un modelo en una aplicación RoR, pero no sé exactamente cómo. Quiero guardar una lista enlazada donde el siguiente nodo tenga el ID del anterior. ¿Cómo puedo hacer esta manera de rieles? Es una relación de uno a uno.


He pasado un tiempo tratando de hacer que funcione con Rails 3.2.14

La sugerencia de la documentación para asociaciones de belongs_to no ha funcionado para asociaciones de belongs_to . Añadiendo una clave foránea solucionó el problema.

Class User < ActiveRecord::Base has_many :invitees, class_name: ''User'', foreign_key: :invited_by belongs_to :host, class_name: ''User'', foreign_key: :invited_by end


La forma más fácil:

class MyModel < ActiveRecord::Base belongs_to :parent, :class_name => ''MyModel'' has_many :children, :class_name => ''MyModel'', :foreign_key => ''parent_id'' end


También puedes ver este tutorial de Ryan Bates sobre asociación auto referencial here . La respuesta de Hck funcionará, pero para mí, necesito una tabla de UNIR y, por lo tanto, uso un has_many a través de la asociación de Rails. ¡Buena suerte!


carriles 5

agregue la columna xxx_id en la tabla de usuarios:

en el archivo de migración:

add_reference :users, :xxx, index: true

y agregar código en el modelo de usuario

has_many :users, class_name: ''User'', foreign_key: ''xxx_id'' belongs_to :manager, class_name: ''User'', foreign_key: ''xxx_id''

Si no tiene un administrador para cada usuario, debe agregar opcional: verdadero.

''foreign_key'' no es necesario. Por defecto, se supone que es el nombre de esta clase en minúsculas y el sufijo "_id".

si foreign_key es user_id, el usuario no tiene un administrador necesario. el resultado es:

has_many :users, class_name: ''User'' belongs_to :manager, class_name: ''User'', optional: true