Ваш вопрос расстраивает, потому что вы говорите, что ваша проблема связана с двойным использованием одного и того же родителя, но код для извлечения родителя опущен. Тем не менее, код для нерелевантной запутанной контекстной 3-модельной взаимосвязи оставлен в.
В любом случае, я скажу так, как это выглядит с моей точки зрения, и я думаю, вы согласитесь:
Решение, о котором вы просите, заключается в том, чтобы вы дважды получали одного и того же родителя (теперь в двух местах памяти с различным состоянием между ними), создавая отношения, которые не должны существовать, каким-то образом выясняя это в ваших валидациях, имея условие в цикле для проверки для этого и повторите весь процесс.
С моей точки зрения, это звучит как кошмар. Как кто-то, кто написал ужасно запутанный код с ошибками, подобный этому, я настоятельно рекомендую вам сначала получить двух разных родителей. Не позволяйте ошибкам распространяться по вашему приложению, содержать их раньше или, что еще лучше, не допускать их возникновения:
class YourUnnamedModel < ActiveRecord::Base
named_scope :unused , :conditions => { :in_use => false }
named_scope :random , :order => 'RANDOM()'
named_scope :limited , lambda { |n=1| return :limit => n }
def self.example
unused.random.limited(2).each do |parent|
puts "doing stuff with #{parent.inspect}"
end
nil
end
end
Предостережение: по какой-то глупой причине (https://rails.lighthouseapp.com/projects/8994/tickets/1274-patch-add-support-for-order-random-in-queries), возможно, что ваш 'RANDOM ()' может быть назван как-то еще.