В Rails ваши контроллеры обрабатывают ваши входящие веб-запросы. Поэтому, если человек нажимает на ссылку, чтобы создать новый комментарий, он может найти маршрут, подобный следующему:
http://mysite.com/comments
Который затем направляется к действию CommentsController#create
. Теперь, если у вас есть много кода для создания нового комментария, тогда да, вы должны перенести часть этого в модель Comment
. В противном случае, если это довольно просто, не беспокойтесь об этом.
Пример простого сценария:
# POST /comments
def create
@comment = Comment.new(:content => params[:comment_content])
if @comment.save
respond_with @comment
else
# error handling
end
end
Если вам нужно запустить метод после создания этого комментария, поместите обратный вызов в модель Comment
:
class Comment < ActiveRecord::Base
after_create :do_something
def do_something
# some code here
end
end
Если создать комментарий сложнее (т. Е. Если в контроллере есть тонна кода, который вам не нужен), то переместите некоторый код в модель Comment
:
CommentsController
# POST /comments
def create
@comment = Comment.create_comment!(params[:comment_content])
if @comment.errors.any?
# handle errors
else
respond_with @comment
end
end
Комментарий модели
class << self
def create_comment!(comment_content)
comment = Comment.new(:content => comment_content)
# lots of complex comment creation code goes here
return comment
end
end
Это позволяет вам сохранять код вашего контроллера простым, перемещая более подробный код в вашу модель.