Руби если Model.exists? - PullRequest
       2

Руби если Model.exists?

1 голос
/ 31 июля 2010

Иметь SubscriberList

Когда заказ размещен, я хочу проверить, готова ли электронная почта нового пользователя в нашем списке подписчиков.

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

В настоящее время в моем orders_controller есть

unless logged_in?
  @order.subscribe_after_purchase(@order.user.email)
end

И в моем Order.rb у меня есть

def subscribe_after_purchase(email)
   unless SubscriberList.exists?(email)
     SubscriberList.create(:email => email)
   end
end

1 Ответ

2 голосов
/ 31 июля 2010

Попробуйте использовать:

unless SubscriberList.exists?(:email => email)
  SubscriberList.create(:email => email)
end

Когда вы просто передаете адрес электронной почты методу exists?, ActiveRecord будет интерпретировать его как первичный ключ.В качестве альтернативы вы можете использовать:

SubscriberList.find_or_create_by_email(email)

- который будет иметь тот же эффект, что и ваш блок unless;создание записи, если она еще не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...