2016-03-21 3 views
0

У меня проблема с приложением Twilio, которое я создаю. Сейчас у меня есть опция для того, чтобы пользователь был «отписано», но они все равно получают сообщение, если они есть. Имеет смысл, что они просто не могут понять, как это изменить. Я попробовал вариант if else в методе, который я укажу в нижней части этого вопроса. Является ли это способом, которым я могу зацикливаться, отписаться и подписаться на if if else?Зацикливание подписчиков и пользователей без подписки

def send_message(msg) 
    if Person.subscribed == true 
    @twilio_number = ENV["TWILIO_NUMBER"] 
    @client = Twilio::REST::Client.new ENV["TWILIO_ACCOUNT_SID"], ENV["TWILIO_AUTH_TOKEN"] 

    @client.account.messages.create(
     from: @twilio_number, 
     to: phone_number, 
     body: msg 
    ) 
    end 
end 

Прямо сейчас, если один человек отписался, он отправляется никому, я просто хочу его отправить на подписку.

ответ

4

Вы можете перебрать все Person объектов:

Person.find_each do |person| 
    if person.subscribed 
    # code here 
    else 
    # code here 
    end 
end 

P.S.

Обратите внимание, что решение по умолчанию будет использовать each для перебора объектов ActiveRecord, но я настоятельно рекомендую использовать find_each, потому что она будет загружать записи в памяти в партиях (10000 пакетный умалчиваемого размер), в то время как each бы загружать все записи сразу.

More info