কখনও কখনও, আপনি বিভিন্ন সংঘের জন্য বিভিন্ন নাম ব্যবহার করতে চান। আপনি যদি মডেলটির কোনও সংস্থার জন্য যে নামটি ব্যবহার করতে চান তা যদি মডেলটির সহযোগিতার মতো না হয় তবে :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
, এবং যে ব্যবহার)।