循环通过订阅和未订阅的用户

时间:2016-03-21 14:17:20

标签: ruby-on-rails ruby debugging if-statement

我正在构建一个Twilio应用程序的问题。现在我可以选择让用户“取消订阅”,但如果他们这样做,他们仍会收到消息。它是有意义的,我只是无法弄清楚如何改变它。我在方法的底部尝试了一个if else语句。他们是否可以通过取消订阅进行循环并使用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

现在如果一个人取消订阅,它会发送给任何人,我只是希望它发送给订阅。

1 个答案:

答案 0 :(得分: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