Comments 41
Надеюсь на этом Вы не остановитесь? (-:
Спасибо!
Спасибо!
Думаю, что если будет интерес, то обязательно напишу еще.
Полтора года на рельсах, а об этих гемах и не знал О_о Спасибо, полезно!
Когда начал заниматься рельсами, вопрос внешних ключей выплыл одним из первых. Много гуглил foreigner выплыл практически сразу. Но после прочтения львиной доли выборки гугла согласился, что это не совсем реилсвей и этого функционала не зря нет в мейнстриме.
В общем как всегда, есть линия партия, а есть джемы которые эту линию партии корректирует, чем пользоваться решать стоит толкаясь от задачи.
В общем как всегда, есть линия партия, а есть джемы которые эту линию партии корректирует, чем пользоваться решать стоит толкаясь от задачи.
Спасибо, о многих гемах не знал.
Есть такой сайт Ruby Toolbox Там есть много интересного про гемы и проекты — особенно радует возможность посмотреть тенденции «популярности» того или иного гема. Все это категоризировано.
А вот мой джентельменский набор:
authlogic — авторизация пользователей
paperclip — загрузка и обработка картинок
enum_column3 — поддержка enum для MySQL
will_paginate — постраничный пэйджинг для отображения данных
delayed_job — фоновая обработка любых заданий
authlogic — авторизация пользователей
paperclip — загрузка и обработка картинок
enum_column3 — поддержка enum для MySQL
will_paginate — постраничный пэйджинг для отображения данных
delayed_job — фоновая обработка любых заданий
кстати почему authlogic, а не devise например?
и paperclip, а не carrierwave?
более того. will_paginate, а не kaminari? delayed_job, а не resque? а аутентификацию через логин пароль уже даже omniauth со специальным провайдером умеют.
Имхо, описывать гемы для рельсов — всегда чревато. в отличие от django, тут есть выбор. и он всегда вызывает холиворы.
Имхо, описывать гемы для рельсов — всегда чревато. в отличие от django, тут есть выбор. и он всегда вызывает холиворы.
Не холивары, а обсуждения.
Согласен, поэтому я планировал не затрагивать потенциально холиварные гемы, а писать только о специфических гемах, аналогов которых либо нет, либо они не очень поддерживаются в данный момент.
Из специфичных гемов могу посоветовать осветить:
- * draper — позволяет отделить модель предметной области от её представления, в качестве приятного бонуса получаем очень чистые представления
- * cells — незаменимая штука для борьбы с жирными контроллерами (которые помимо основных данных, выбирают ещё кучу сопутствующих из различных моделей)
- * trucker — очень полезная штука для переноса данных из унаследованной базы данных
- * metric_fu — помогает отслеживать динамику качества кода вашего проекта с помощью кучи других гемов, считающих разнообразные метрики
Для конфигураций порекомендую гем github.com/kaize/configus
Разрешите полюбопытствовать в целях повышения кругозора
Почему тут не def up?
class AddDeletedToTasks << ActiveRecord::Migration
def change
Почему тут не def up?
для почты — mailcatcher
для конфигурации я делал свое вроде удобное творенье — взгляните github.com/homakov/configit
для конфигурации я делал свое вроде удобное творенье — взгляните github.com/homakov/configit
в песочнице есть статья про carrierwave & paperclip
Я предлагаю использовать вместо foreigner более функциональный аналог — schema_plus.
В Rails есть стандартный метод belongs_to, его можно использовать в миграциях тоже, соответственно от гема foreigner никакого толку я не вижу. Пример использования belongs_to в миграциях:
change_table :company_profiles do |t|
t.belongs_to :user
end
А где про это можно почитать, что-то в доках не нашел ничего.
Эм, ну так это алиас метода references, ключей он не создает в схеме.
Возможно, я вас неправильно понял.
api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column
api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column
Как не создает? Проверьте. Запись t.belongs_to :user создаст в таблице company_profiles foreign_key user_id типа integer. Все создается
Окей, смотрите. Вот такая миграция.
Смотрим через любой менеджер (у меня это Sequel Pro):

Вы видите внешние ключи? А то, что создала миграция — это просто поле, в которой хранится айдишник поста.
Вобщем, прочтите сперва хотя бы это.
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.text :content
t.belongs_to :post
t.timestamps
end
end
end
Смотрим через любой менеджер (у меня это Sequel Pro):

Вы видите внешние ключи? А то, что создала миграция — это просто поле, в которой хранится айдишник поста.
Вобщем, прочтите сперва хотя бы это.
Для полиморфной связи можно заюзать:
В rails 3 если этот код написать в self.change, то миграцию на down не нужно будет писать вовсе, так что, я бы сказал, в foreigner не преимущества, а только недостатки.
t.belongs_to :user, :polymorphic => true
В rails 3 если этот код написать в self.change, то миграцию на down не нужно будет писать вовсе, так что, я бы сказал, в foreigner не преимущества, а только недостатки.
Вместо immortal лучше использовать acts_as_archive или acts_as_soft_deletable, который перемещает запись в другую таблицу вместо того, чтобы помечать её удаленной, ибо если запись оставить и только пометить как удаленную, то потом могут из ниоткуда вылезти очень странные артефакты. Сталкивались, знаем.
И, кстати, ещё один камень в огород will_paginate: если вы работаете с MongoDB — то лучше использовать Kaminari, ибо WillPaginate с монгой не работает.
Такие дела.
И, кстати, ещё один камень в огород will_paginate: если вы работаете с MongoDB — то лучше использовать Kaminari, ибо WillPaginate с монгой не работает.
Такие дела.
Хорошая альтернатива letter_opener => mailtrap.io/ он позволяет дебажить стэйджинги да и расшарить результат легче.
Sign up to leave a comment.
5 гемов на все случаи жизни