2015-01-07 3 views
0

Итак, у меня есть фрагмент кода, который по существу находит случайный список и распечатывает его. Однако в цикле он также сохраняет этот идентификатор в таблицу, называемую статусами.Как получить случайные идентификаторы, которые не входят в список X

Теперь я хочу, чтобы снова пройти этот список, и на этот раз распечатать 150 рандомов. Однако на этот раз я хочу, чтобы он сначала проверял состояния, чтобы убедиться, что элемент списка не был распечатан раньше.

Вот код, у меня сейчас:

class ScheduleTweets 
@queue = :schedules_queue 

def self.perform(user_token, user_id) 
client = Buffer::Client.new(user_token) 
user = user_id 
list = List.all.sample(150) 
profiles = client.profiles 
profile_ids = profiles.map(&:id) 
list.each do |list| 
    list.statuses.create(:user_id => user) 
    client.create_update(body: {text: "#{list.text}", profile_ids: profile_ids }) 
    end 
end 
end 

Если бы я предполагаю, что я должен добавить что-то после того, как List.all.sample (150), где он проверяет, если список имеет list_id, который присутствует в статусе ,

ответ

0

Собрать элементы списка из таблицы statues и создать массив с этим результатом.

stat_ids = Status.all.collect{|s| s.list_id} 

Теперь цикл по случайной 150 списка и проверить список идентификаторов содержит в stat_ids или нет.

random_lists.each do |rl| 
    if stat_ids.include?(rl.id) 
    //do something 
    end 
end 

Поскольку я не знаю вашу архитектуру базы данных, я предполагал, что она приведена выше.

Смежные вопросы