Я делаю простую систему BBS с рубином на рейках3.Rails 3 ассоциации моделей
3 основных режимаl являются членами/категориями/статьями.
Статья принадлежит тем членам/категориям, (member_id/category_id columns in db table) и каждому члену/категории 'has_many'.
Когда конкретный пользователь пытается написать статью, я попытался его
def new
@article = current_member.articles.new
end
и заполняется автоматически в member_id секции, когда статья создается без какой-либо формы ввода или что-нибудь.
Теперь, что делать, если я хочу автоматически заполнить столбец category_id статьи? Я считаю, что каждая работа, связанная с данными, должна выполняться в рамках модели. Тем не менее, я передаю в: категория стоимости через URL
Например,
LOCALHOST: 3000/Статьи/КНС/новый
будет означать статью должны иметь CATEGORY_ID из 2 (предполагается категорию с идентификатором = 2 имеет имя = qna, также я выполнил задания маршрутизации, которые я могу успешно получить «qna» из params [: category]).
Должен ли я использовать
def create
current_member.articles.build(:category => get_category_id_from_name(params[:category]))
end
? Но все в порядке? потому что я считаю, что, поскольку модели не могут получить доступ к переменной params, контроллер должен выполнить указанное выше задание, и thats not 'rails way' Я не хочу использовать вложенную форму, потому что я не хочу, чтобы пользователь выбирал категорию при написании. Например, если есть плата QnA, и если пользователь нажал кнопку «написать», это означает, что пользователь пишет на плате QnA.
Да, я тоже об этом подумал, но что, если пользователь использует ex) firefox, измените скрытую переменную readonly на что-то еще? – user482594
Если он по-прежнему является допустимым идентификатором категории, тогда я не вижу проблемы. Если только некоторые участники не могут отправлять сообщения в определенные категории. Независимо от того, кто будет беспокоиться об изменении этой скрытой формы, очевидно, затрачивает немало усилий без всякой причины. Вы можете проверить ваш контроллер, чтобы убедиться, что идентификатор категории для категории в URL-адресе совпадает с идентификатором, переданным в этом скрытом входе, и не сохраняйте статью, если это не так. Хотя я достаточно зеленый в RoR, чтобы не знать, как это сделать. – sholsinger