2016-03-01 2 views
1

Я ищу лучший способ создать веб-проект, над которым я работаю.Как добавить ограничение или одобрение данных пользователя

Мой сайт просит пользователей и не пользователей вводить информацию о местных местоположениях в своих городах. Я не хочу ограничивать это только для пользователей. У меня есть форма для сбора информации о том, в каком состоянии и городе они находятся, а также о деталях их местонахождения. Я хотел бы одобрить эту информацию, прежде чем отправлять ее на веб-сайт.

Каков наилучший способ обработки информации? У Rails есть хорошее решение для меня, чтобы одобрить эту информацию, прежде чем делать ее вживую?

Мне нужен способ ограничения данных/листинга перед показом на странице списка.

ответ

0

Это довольно общий вопрос и потребует не только простых действий Rails. Это также зависит от того, что вы подразумеваете под approve this information. Вы как администратор просто хотите убедиться, что это действительная информация (например, пользователь не набирал кучу случайных символов в поле номера телефона), или вам действительно нужно убедиться, что сама информация приемлема (например, пользователь не вводили путаницу ненормативной лексики в текстовое поле)?

Для первой части вы можете использовать Active Record Validations, чтобы убедиться, что данные сами по себе являются звуковыми (например, проверка того, что номер телефона фактически состоит из цифр).

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

Чтобы отслеживать, должен ли отображаться этот обзор, вам необходимо добавить атрибут approved к модели Review. Вы можете сделать это через Active Record Migration. Когда создается новый обзор, approved должен быть false по умолчанию. Когда вы будете готовы показать этот новый отзыв, вы можете установить approved на номер true.

Вы можете выполнить все это с помощью нескольких действий контроллера. Я предполагаю, что у вас есть фразу admin в вашей личной учетной записи пользователя, чтобы вы могли одобрить отзывы.Если это так, вы можете настроить такой контроллер:

class ReviewController < ActionController::Base 
    def index 
    if current_user.admin 
     # Allow yourself to view all Reviews, presumably with an `Approve` button 
     @reviews = Review.all 
    else 
     # Only allow standard users to see already-approved reviews 
     @reviews = Review.where(approved: true) 
    end 

    # render reviews however you need to 
    end 

    def update 
    @review = Review.find(params[:id]) 
    if params[:approved] && current_user.admin 
     # You've clicked an approve button, and you are an admin 
     @review.update_attribute(:approved, true) 
    end 

    # respond to the request here 

    # Note, there are definitely cleaner ways to do this, but I wanted to 
    # demonstrate where you could set the approved flag 
    end 
end 
+0

Спасибо! То, что я имею в виду, утверждая, прежде всего, чтобы убедиться, что информация имеет отношение к веб-сайту, убедитесь, что это не профанация или бот-созданная, или, возможно, злонамеренная. – Chelsea

+0

Ваш код помогает установить пример. Там много жемчужин и честно, пока я все еще участвую, я хотел бы сделать это сам простым способом. То, что вы показываете мне, кажется прямым и базовым. Спасибо. – Chelsea

+0

Без проблем! Раньше я использовал различные драгоценности типа 'Admin', но если вы учитесь, я определенно рекомендую писать все это с нуля, пока он не станет второй натурой. – JackCollins

0

Вы можете использовать атрибут флага в своей модели, предпочтительно статус, указывающий, одобрен ли он или нет. По умолчанию, когда пользователь добавляет данные, он должен быть ложным. Вы можете вручную обновить его до значения true, чтобы данные были живыми.

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

@listing = Listing.where("status is not false") 

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

def create 
    listing.status = false 
    listing.save 
end 

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

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

+0

Спасибо! Если я буду следовать за вами, я добавляю в представления пользователя в базу данных, но удостоверяюсь, что все они установлены в false. Я делаю вживую все списки, для которых установлено значение true. Затем я могу использовать камень RailsAdmin для просмотра материалов. – Chelsea

+0

Спасибо! Я проверю RailsAdmin и оттуда оттуда и настрою таблицу местоположений. – Chelsea

+0

Готово, я верю. Я новичок в этом. Цените свой вклад! – Chelsea

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