una saber requisitos registro registrada para nacional mexico lucro fines esta dar crear constituir como civiles civil asociaciones asociacion alta ruby reflection activerecord

ruby - saber - Cómo obtener asociaciones activas de registros a través de la reflexión



requisitos para constituir una asociacion civil en mexico 2018 (3)

Para las columnas normales, puede obtenerlas a través del método de clase de columns . Sin embargo, las asociaciones se pueden nombrar algo bastante diferente si la opción foreign_key se establece en el método de relación. Por ejemplo, dado

class Post has_many :comments, :foreign_key => :message_id # this is a contrived example end

si hiciera Post.column_names podría Post.column_names en message_id , pero ¿hay alguna manera de obtener comments ?


Para futuros Googlers en Rails 4 la respuesta ahora sería:

Post.reflections[:comments].foreign_key # => "message_id"

Tomado desde aquí: https://.com/a/15364743/2167965

EDITAR:

reflections , a partir de 4.2, ahora toma cadenas en lugar de símbolos, que es un error divertido de localizar. Si desea seguir usando símbolos, debe cambiar a reflect_on_association(:assoc_name) . También tenga en cuenta que las reflections son en realidad la API pública que seguirá informando cosas como HABTM, a pesar de que es todo bajo el capó. Los reflejos que Rails está usando ahora están en _reflections


Para un objeto ActiveRecord que uso:

object._reflections

Entonces, puedo manipular el Hash devuelto. Por ejemplo:

object._reflections.keys.each do |key| object.public_send(key).destroy_all end

El ejemplo anterior elimina todas las relaciones de la base de datos.


Model.reflections brinda información sobre las asociaciones de un modelo. Es una tecla Hash introducida en el nombre de la asociación. p.ej

Post.reflections.keys # => ["comments"]

Aquí hay un ejemplo de parte de la información a la que se puede acceder:

Post.reflections["comments"].table_name # => "comments" Post.reflections["comments"].macro # => :has_many Post.reflections["comments"].foreign_key # => "message_id"

Nota: esta respuesta se ha actualizado para cubrir Rails 4.2 en base a la respuesta de MCB y los comentarios a continuación. En versiones anteriores de Rails, se accedía a la foreign_key del reflejo usando primary_key_name en primary_key_name lugar, y las claves para las reflexiones pueden ser símbolos en lugar de cadenas, dependiendo de cómo se definió la asociación, por ejemplo :comments lugar de "comments" .