Поскольку модель Card хранит одно поле game_id, и эта новая карта затем устанавливается в качестве дочернего объекта игрового объекта, оба массива обновляются.У Rails нет возможности узнать, что к чему.Однако, есть решение.
Если вы посмотрите документацию has_many на api.rubyonrails.org, вы увидите, что есть опция условий.Поэтому я предлагаю добавить логическое поле в модель карты.Затем добавьте условие в каждое из ваших объявлений has_many для модели Card, чтобы проверить соответствие логическому значению.Например,
rails g migration add_used_to_cards used:boolean
Затем отредактируйте созданный файл миграции, чтобы можно было установить значение по умолчанию.Метод add_column должен выглядеть следующим образом:
add_column :cards, :used, :boolean, :default => false
Затем измените has_many следующим образом:
has_many :community_cards, :class_name => "Card", :dependent => :destroy, :conditions => { :used => false }
has_many :used_cards, :class_name => "Card", :dependent => :destroy, :conditions => { :used => true }
Это должно помочь.