Привет, у меня возникли проблемы с концептуализацией, когда следует использовать :source
и когда использовать :class
для моих более сложных моделей.
Здесь у меня есть пример пользователей с друзьями.
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
Может кто-нибудь объяснить, почему для Дружбы он :class_name
вместо :source
? Это потому, что это просто спаривание (has_many +: source, принадлежит_to +: class_name)?