Как найти запись, которая еще не была сохранена в Rails? - PullRequest
1 голос
/ 31 мая 2011

Скажем, у меня есть запись с именем Post, в которой много комментариев.Теперь я запускаю следующий код:

p = Post.new
p.comments.build(:title => 'great')

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

p.comments.find_by_title('great')

Но так как она еще не сохранена, это будет возвращать ноль (потому что он фактически выполняет запрос SQL). Есть ли способ найти этозапись перед сохранением?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 31 мая 2011
comment = p.comments.build(:title => "great")
1 голос
/ 31 мая 2011
great_comment = p.comments.detect{|c| c.title == 'great'}
0 голосов
/ 31 мая 2011

Просто напишите:

new_comment = p.comments.build(:title => 'great')

и new_comment будут вновь добавленным комментарием.

Или вы можете сделать что-то вроде:

new_comments = p.comments.select{|x| x.new_record?}

, который даст вам массив со всеми несохраненными комментариями.

...