Я делаю простую систему BBS с ruby на rails3.
3 основных модели: члены / категории / статьи.
Статья принадлежит элементам / категориям (столбцы member_id / category_id в таблице базы данных)
и каждый член / категория 'has_many' статей.
Когда конкретный пользователь пытается написать статью, я пробовал это
def new
@article = current_member.articles.new
end
и автоматически заполняет раздел member_id, когда статья создается без ввода формы или чего-либо еще.
Что мне делать, если я хочу автоматически заполнить столбец category_id статьи?
Я считаю, что все работы, связанные с данными, должны выполняться в рамках модели. Тем не менее, я передаю: значение категории через URL
Например,
localhost: 3000 / article / qna / new
будет означать, что статья должна иметь category_id = 2 (при условии, что у категории с id = 2 есть name = qna, также я выполнил задания по маршрутизации, которые я могу успешно получить 'qna' из params [: category]).
Должен ли я использовать
def create
current_member.articles.build(:category => get_category_id_from_name(params[:category]))
end
? Но нормально ли это? потому что я считаю, что поскольку модели не могут получить доступ к переменной params, контроллер должен выполнять вышеуказанную работу, и это не «путь рельсов»
Я не хочу использовать вложенную форму, потому что я не хочу, чтобы пользователь выбирал категорию, когда он пишет. Это похоже на то, что если есть плата QnA и пользователь нажимает кнопку «запись», это означает, что пользователь пишет на плате QnA.