今日、いくつかの魔法に出くわしました。情報に基づいたコードを記述できるように、それを理解するのに役立つことを願っています。
私のアプリには、次の 3 つのクラスがあります。
class Person < ActiveRecord::Base
has_many :selected_apps
has_many :app_profiles, through: :selected_apps do
def unselected(reload=false)
@unselected_app_profiles = nil if reload
@unselected_app_profiles ||= proxy_association.owner.app_profile_ids.empty? ?
AppProfile.all :
AppProfile.where("id NOT IN (?)", proxy_association.owner.app_profile_ids)
end
end
end
class AppProfile < ActiveRecord::Base
end
class SelectedApp < ActiveRecord::Base
belongs_to :person
belongs_to :app_profile
end
上記のコードを使用すると、現在 に関連付けられていないperson.app_profiles.unselected
すべての を取得したり取得したりできます。多くの SQL 作業を行う必要はありません。素晴らしい!AppProfiles
Person
私の問題は、私がコードを理解していないことです - それはいつも私を不安にさせます. proxy_association のドキュメントを調べてみましたが、かなり不透明でした。
誰かが合理的に簡単な説明や詳細を学ぶのに適した場所を提供できますか?