Rails - Создать или обновить запись .... Если оператор против найти или создать с помощью - PullRequest
0 голосов
/ 07 января 2011

У меня

@user = User.find(1)
@event = Event.find(1)
for interest in @event.interests
  @user.choices.create(:interest => interest, :score => 1)
end

Работает нормально, но каждый раз создает записи.Я хотел бы проверить, существует ли запись с соответствующим интерессом из цикла for, и если это так, я бы хотел обновить, иначе создание - это нормально.

Я оглянулся и нашел метод "find_or_create_by"но это на самом деле не работает для меня.Я имел =>

 @user.choices.find_or_create_by_interest(:interest => interest.id, :score => 1) 

и получаю ошибку "неопределенный метод` find_by_interest '".

Вы видите, что я делаю не так?Или лучше придерживаться оператора if / else?

Я не был уверен, что у метода find_or_create_by есть возможность обновления атрибута внутри него.

Ответы [ 2 ]

6 голосов
/ 07 января 2011

Еще раз, вы должны сделать find_or_create_by_interest_id_and_score

2 голосов
/ 03 марта 2011

Если я не ошибаюсь в том, что вы пытаетесь достичь, способ сделать это:

find_or_create_by_interest_id(:interest => interest.id) { |u| u.score = 1 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...