কখনও কখনও, আপনি বিভিন্ন সংঘের জন্য বিভিন্ন নাম ব্যবহার করতে চান। আপনি যদি মডেলটির কোনও সংস্থার জন্য যে নামটি ব্যবহার করতে চান তা যদি মডেলটির সহযোগিতার মতো না হয় তবে :throughআপনি :sourceএটি নির্দিষ্ট করতে ব্যবহার করতে পারেন ।
আমি মনে করি না উপরের অনুচ্ছেদটি ডক্সের তুলনায় আরও পরিষ্কার, সুতরাং এখানে একটি উদাহরণ দেওয়া আছে। ধরা যাক আমাদের তিনটি মডেল রয়েছে Pet, Dogএবং Dog::Breed।
class Pet < ActiveRecord::Base
has_many :dogs
end
class Dog < ActiveRecord::Base
belongs_to :pet
has_many :breeds
end
class Dog::Breed < ActiveRecord::Base
belongs_to :dog
end
এই ক্ষেত্রে, আমরা নামটির স্থানটি বেছে নিয়েছি Dog::Breed, কারণ আমরা Dog.find(123).breedsএকটি সুন্দর এবং সুবিধাজনক সমিতি হিসাবে অ্যাক্সেস করতে চাই ।
এখন, এখন যদি আমরা একটি has_many :dog_breeds, :through => :dogsসমিতি তৈরি করতে চাই Pet, হঠাৎ আমাদের একটি সমস্যা হয়। পাগল একটা খুঁজে পেতে সক্ষম হবেন না :dog_breedsউপর সমিতি Dog, তাই পাগল সম্ভবত জানতে পারে না যা Dog সমিতি আপনি ব্যবহার করতে চান। প্রবেশ করান:source :
class Pet < ActiveRecord::Base
has_many :dogs
has_many :dog_breeds, :through => :dogs, :source => :breeds
end
সঙ্গে :sourceকরছি বলার পাগল, একটি অ্যাসোসিয়েশন নামক জন্য চেহারা :breedsউপর Dogমডেল (যেমন যে জন্য ব্যবহৃত মডেল :dogs, এবং যে ব্যবহার)।