Лучшие практики Rails. Как вы обрабатываете уникальных пользователей, которые могут иметь одинаковые записи? - PullRequest
1 голос
/ 09 марта 2009

Как вы справляетесь с реальными конфликтами имен? Существует ли установленный передовой опыт или шаблон проектирования пользовательского интерфейса для устранения неоднозначности записей, подобных этой? Если у авторов может быть много статей, но несколько авторов могут иметь одно и то же имя, как бы вы позволили пользователям выбирать автора, которого они действительно хотят, при создании статей?

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

Чтобы было понятнее - пользователи не являются авторами. Пользователи - это люди, которые вводят информацию об авторах и статьях. Единственная гарантированная информация, представляемая автору, это имя автора. Другие детали не являются обязательными.

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

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

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

Ответы [ 4 ]

4 голосов
/ 09 марта 2009

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

Возможно, вам нужно попросить своих авторов представить краткую информацию о себе в своем профиле, которую вы можете использовать для устранения неоднозначности на их условиях. В качестве альтернативы, в зависимости от типа статьи, которую вы можете выбрать, чтобы описать их с точки зрения географии («Джон Биггс, Флорида», «Джон Биггс, Калифорния») или, возможно, по предметным областям, о которых они решили написать: «Джон Биггс, Java Expert Джон Биггс, специалист по Индонезии и т. Д.

Вы могли бы даже иметь «Джона Биггса (1)», «Джона Биггса (2)» и так далее. Кажется, я помню, что это хорошо работает для IMDB, который является хорошим примером сайта, который должен был решить эту проблему.

Важная вещь в юзабилити, когда речь идет об этих типах, - согласованность - вам всегда нужно идентифицировать своих авторов одинаково, чтобы у вас не было "Джона Биггса, Флорида" и "Джона" Biggs (2) ", и вы должны убедиться, что личность, которую вы даете автору, не изменится после его настройки, поэтому" John Biggs (2) "никогда не станет" John Biggs (5) ", и ваши пользователи смогут идентифицируйте их всякий раз, когда они видят однозначное имя как того же человека, который имел это имя ранее.

2 голосов
/ 09 марта 2009

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

Пользователи могут щелкнуть имя в div, которое открывает запись в новом окне - в новом окне есть кнопка «выбрать этого автора», которая возвращает вас на исходную страницу с этим автором в текстовом поле в качестве имени автора. (идентификатор).

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

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

1 голос
/ 09 марта 2009

Несколько вещей для размышления: Можете ли вы сначала фильтровать по предмету? Например, если Джон Джонс (1) пишет статьи о генетике, а Джон Джонс (2) пишет статьи о компьютерных сетях, но если пользователь сначала выберет общий предмет, вы сможете отфильтровать многие из менее применимых возможных повторяющихся имен. , (Однако у меня была бы кнопка, чтобы увидеть нефильтрованный список, потому что иногда люди пишут статьи в новой теме). Если вы не хотите ограничивать выбор, возможно, сортировка по предмету или местоположению облегчит поиск правильного.

Когда вы показываете список возможных повторяющихся имен, показывайте общую информацию об авторе, включая адрес и университетскую принадлежность, и, возможно, название одной статьи. Имейте кнопку, чтобы нажать, чтобы показать существующие статьи для любой из них. Таким образом, если вы знаете, что Джон Джонс, которого вы хотите, находится в штате Флорида, вам нужно проверить только три из них на Fl, а не все статьи 37 Джона Джонса, написавшего статьи по генетике.

Имейте в виду, что пользователи часто ленивы, они предпочитают просто вставить новое имя, а не выбирать из длинного списка существующих имен. Поэтому сложнее ввести новое имя, чем выбрать одно. Им нужно сначала пройти процесс выбора, прежде чем они смогут ввести новое имя. У нас есть приложение, которое даже не показывает кнопку для добавления нового человека, пока вы не выполните поиск. Поскольку имена могут иметь вариации, подумайте, хотите ли вы использовать нечеткую логику для поиска. Возможно, вы захотите отобразить J. Jones, Johnny Jones и Jon Jones, а также John Jones в результатах выбора.

Теперь многое зависит от того, сколько знаний ваши пользователи об авторе заблаговременно. Если они ничего не знают, кроме имени, у них нет оснований судить между 37 Джонсами, которые есть в базе данных. В этом случае может быть лучше просто принять дубликаты и вернуть результаты на основе фильтрации по ключевым словам или тому, что вы храните в статье. Действительно ли необходимо убедиться, что статьи приписаны правильному Джону Джонсу, если вы действительно ничего не знаете об авторе, кроме его имени? Вас больше волнует предмет и название статьи или список всех статей, написанных Джоном Джонсом из UVA, профессором политологии?

0 голосов
/ 09 марта 2009

Вы не! Имена - плохой способ идентификации, как вы узнаете. У вас есть несколько способов обойти это:

Добавьте некоторую форму уникального идентификатора для обычных пользователей, это будет имя пользователя для проверки уникальности. В вашем случае описанный выше метод name (1) может потребоваться, если у вас действительно нет никакой другой информации, кроме имени.

Альтернативой может быть использование нескольких атрибутов для создания составного ключа (например, name + dob)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...