Comments 18
Здорово, что собрали всё в одном месте. Нашел немного нового для себя.
Алексей, спасибо, с none и becomes не доводилось столкнуться. Возьму на карандаш. Хотя сейчас не вижу где можно было бы попробовать. Если честно, то не ожидал, что бы будите постить статьи тех характера. Успехов!
Дык я стараюсь :) Буду и в своем блоге alec-c4.com что-то иногда писать :)
Например(про none):
каминари получает nil и дохнет
= paginate @objects получает nil и дохнет
проще один раз проверить и отдать пустой ActiveRelation чем во всех мыслимых мистах писать
— if @objects.presence
= paginate @objects
каминари получает nil и дохнет
= paginate @objects получает nil и дохнет
проще один раз проверить и отдать пустой ActiveRelation чем во всех мыслимых мистах писать
— if @objects.presence
= paginate @objects
Вы конечно простите, я понимаю, что это пример, но за такое нужно пальцы ломать выговор делать.
Для этого есть
@plain_pictures = PlainPicture.all
@plain_pictures.map ...
Для этого есть
#find_each
find_each, кстати, добавит/заменит у вашего запроса order by, что естественно. а так же естественно что уберёт limit, если таковой есть.
«Hacks» подразумевает под собой использование неких скрытых возможностей или расширение оных. В вашем случае это скорее cheetsheet.
Код, использующий
pluck
, можно упростить доArticle.pluck(:title)
Раз уж примеры для rails 4
упрощается до
where(["id not in (?)", checked.pluck(:id)])
упрощается до
where.not(id: checked.ids)
Для использования в rails3 есть такой workaround:
scope :none, where(:id => nil).where("id IS NOT ?", nil)
разве нельзя просто
scope :none, where('1=2')
?
А есть ли способ элегантно объединять скоупы?
Например у пользователя есть скоупы received_messages, sent_messages. Можно ли сделать all_messages без непосредственного использования SQL-строки?
Например у пользователя есть скоупы received_messages, sent_messages. Можно ли сделать all_messages без непосредственного использования SQL-строки?
Может лучше вместо:
if i.class < Art then i.becomes(Art) else i end
Писать так:
i.class < Art ? i.becomes(Art) : i
if i.class < Art then i.becomes(Art) else i end
Писать так:
i.class < Art ? i.becomes(Art) : i
Sign up to leave a comment.
ActiveRecord Hacks