2013-04-18 2 views
1

Мне очень интересно узнать, что говорят ветераны Rails в переполнении стека об этом.Rails Общая архитектура Лучшие практики

В основном, как Rails newb, и как человек, не имеющий «формального» фона в программировании, одна из моих самых больших проблем связана с надлежащей архитектурой. Откуда я знаю, что правильно или лучше, чтобы создать приложение?

Мне очень хотелось бы посмотреть, какие у вас есть ресурсы.

Я знаю, основные из них - но многие из них не дают мне обзор архитектуры высокого уровня, я хочу:

http://www.amazon.com/Agile-Development-Rails-Third-Edition/dp/1934356166/ref=cm_lmf_tit_7 http://www.amazon.com/Ruby-Programming-Language-David-Flanagan/dp/0596516177/ref=cm_lmf_tit_3 Railscasts

Вот краткий пример:

Предположим, что я создаю приложение Rails, в котором есть продавцы и покупатели. Каждый набор пользователей имеет свою собственную аутентификацию, разные разрешения и т. Д. Было бы правильным создать одно приложение для этого или нескольких, которые обмениваются данными через API? Есть ли дополнительная польза для этой абстракции нескольких приложений?

Спасибо!

ответ

3

Это непростой вопрос. Полный ответ во многом будет зависеть от вашего проекта.

Если вы являетесь стартером, я бы порекомендовал вам хранить все в одном приложении, у вас достаточно «разделение» с использованием моделей с умом. Трудно воплотить сценарий, когда сложность, возникающая в результате взаимодействия между приложениями, полезна.

В вашем примере вы должны спросить себя, что лучше использовать одну родительскую модель для продавцов и покупателей или две отдельные модели.

В первом случае вы можете рассмотреть STI:

  • пользователя (основной класс, определяемый как class User < ActiveRecord::Base)
    • коммерсанта (определяется как class Merchant < User)
    • покупателя (аналогично class Shopper < User)

Google для ИППП для дальнейших Детали.

Затем в контроллерах/просмотра вы можете проверить разрешения быстро, например:

if user.class == Merchant 
    do_something 
else 
    do_something_else 
end 

Аналогично два класса может пройти аутентификацию с различными алгоритмами. Вы также можете включить «стандартную» аутентификацию в базовый класс пользователя и, если необходимо, специализировать его в подклассах.

Cheers,

Смежные вопросы