significa que ruby-on-rails

ruby on rails - que - Rieles: diferencia entre: fuente=> ?? y: class_name=> ?? en modelos



que significa:: en php (2)

Aquí hay ejemplos de uso de: source y: class_name.

has_many :subscribers, through: :subscriptions, source: :user

has_many :people, class_name: "Person"

Como puede ver, cuando usa una tabla completa, termina usando la source o si usa class_name .

Mire los ejemplos de opciones en este enlace: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many

Hola, tengo problemas para conceptualizar cuándo usar :source y cuándo usar :class para mis modelos más complejos.

Aquí tengo un ejemplo de usuarios con amigos.

class User < ActiveRecord::Base ... has_many :friendships, :dependent => :destroy has_many :friends, :through => :friendships, :conditions => "status = ''accepted''" has_many :requested_friends, :through => :friendships, :source => :friend, :conditions => "status = ''requested''", :order => :created_at has_many :pending_friends, :through => :friendships, :source => :friend, :conditions => "status = ''pending''", :order => :created_at end class Friendship < ActiveRecord::Base attr_accessible :friend_id, :user_id, :status belongs_to :user belongs_to :friend, :class_name => "User", :foreign_key => ''friend_id'' end

¿Alguien puede explicar por qué para Friendship es :class_name lugar de :source ? ¿Esto se debe a que es solo el emparejamiento (has_many +: source, belongs_to +: class_name)?


Conceptualmente son iguales, solo tienen que ser diferentes para diferentes usos.

:source se usa (opcionalmente) para definir el nombre del modelo asociado cuando está usando has_many through ; :class_name se usa (opcionalmente) en una simple has many relaciones. Ambos son necesarios solo si Rails no puede averiguar el nombre de la clase por sí solo. Consulte la documentación de has_many en la API aquí .