ভাবেন,
আমি এটি সঠিকভাবে বুঝতে পেরেছি তা নিশ্চিত করতে চাই। এবং দয়া করে উত্তরাধিকারের জন্য কেসটিকে এখানে (সেন্টেন্টবিং) উপেক্ষা করুন, পরিবর্তে has_many এর পলিমারফিক মডেলগুলিতে মনোনিবেশ করার চেষ্টা করছেন: সম্পর্কের মাধ্যমে। এটি বলেছিল, নিম্নলিখিতগুলি বিবেচনা করুন ...
class Widget < ActiveRecord::Base
has_many :widget_groupings
has_many :people, :through => :widget_groupings, :source => :person, :conditions => "widget_groupings.grouper_type = 'Person'"
has_many :aliens, :through => :widget_groupings, :source => :alien, :conditions => "video_groupings.grouper_type = 'Alien'"
end
class Person < ActiveRecord::Base
has_many :widget_groupings, :as => grouper
has_many :widgets, :through => :widget_groupings
end
class Alien < ActiveRecord::Base
has_many :widget_groupings, :as => grouper
has_many :widgets, :through => :widget_groupings
end
class WidgetGrouping < ActiveRecord::Base
belongs_to :widget
belongs_to :grouper, :polymorphic => true
end
নিখুঁত বিশ্বে, আমি একটি উইজেট এবং একজন ব্যক্তিকে দেওয়া চাই, এর মতো কিছু করুন:
widget.people << my_person
যাইহোক, আমি যখন এটি করি, আমি লক্ষ্য করেছি যে 'গ্রেপার'-এর' টাইপ 'উইজেট_গোষ্ঠীগুলিতে সর্বদা শূন্য থাকে। তবে আমি যদি নীচের মতো কিছু করি:
widget.widget_groupings << WidgetGrouping.new({:widget => self, :person => my_person})
তারপরে সমস্ত কাজগুলি যেমন আমি প্রত্যাশা করতাম। আমি মনে করি না যে আমি কখনও কখনও অ বহু-বহুজনিত সংঘের সাথে এটি ঘটতে দেখেছি এবং কেবলমাত্র জানতে চেয়েছিলাম যে এটি এই ব্যবহারের ক্ষেত্রে সুনির্দিষ্ট কিছু ছিল বা আমি সম্ভবত কোনও ত্রুটি দেখছি।
কোন সাহায্যের জন্য ধন্যবাদ!