Как добавить пользовательскую модель в мое приложение, чтобы данные в моем приложении Rails зависели от «пользователя» - PullRequest
0 голосов
/ 16 октября 2010

, чтобы посмотреть, есть ли какие-то идеи о том, как я должен представить идею зарегистрированного "пользователя", который эффективно "объединяет" данные .... позвольте мне объяснить.

Я былсоздание моего приложения, если есть только один пользователь.Мне.Все данные и отчеты являются специфическими для меня.Я только что добавил authlogic.

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

До сих пор я предполагал, что мне придется пойти в модели и добавить user_id практически к каждой из них, а затем перейти ко всем контроллерам и получить ихпоиск по пользователю.

Но мне интересно, есть ли жемчужины, предложения, идеи лучшего способа объединения данных для каждого пользователя.

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

Итак ... идеи, прежде чем я попытаюсь покопаться в себе ... спасибо:)

Ответы [ 2 ]

2 голосов
/ 16 октября 2010

У вас правильная идея.Вы должны установить отношения между пользователями и моделями данных.В некоторых случаях это может быть простой belongs_to :user, но если вы хотите, чтобы несколько пользователей имели доступ к определенным данным, это должно быть отношение «многие ко многим» has_and_belongs_to_many :users.

Затем мыпросто измените способ извлечения данных:

# Some controller, no restrictions
def index
  @reports = Report.all
end

def view
  @report = Report.find(params[:id])
end

# Some controller, with restrictuons
def index
  @reports = current_user.reports.all
end

def view
  @report = current_user.reports.find(params[:id])
end

Используя вышеупомянутую логику, пользователи будут видеть только те данные, к которым имеют отношение.

Вероятно, это будет немного работыЕсли вы уже создали большую часть приложения, без сомнения.То, с чем вы должны действительно, действительно, действительно быть осторожным, не оставлять без присмотра какие-либо Report.all или Report.find(params[:id]), поскольку это может привести к уязвимости - пользователи смогут получить доступ к данным, которые нена самом деле их.

0 голосов
/ 16 октября 2010

То, о чем вы говорите, называется ACL (списки контроля доступа). Существует множество плагинов для Rails, которые сделают большую часть работы за вас. Поищите в Google и посмотрите, сможете ли вы найти тот, который соответствует вашим потребностям.

Редактировать: После быстрого просмотра Acl9 представляется наиболее популярным Rails 3-совместимым.

...