【发布时间】:2016-07-23 18:21:09
【问题描述】:
为了清楚起见,我第二次重新阅读railstutorial。我试图理解 rails 提供的RESTful resources,它列出了各种 HTTP 请求以及相应的控制器操作:index、show、new、create、edit、update、destroy。
我从来没有真正完全理解 Rails 控制器的工作原理,我想澄清一下。如果我创建一个users_controller.rb 并想创建新用户,就是这样。我不关心重定向、闪信和其他功能。我只想创建新用户并将其保存在我的数据库中。
我想做User.create(name: "Iggy1", email: "letsmail@iggy.com")。假设我进行了迁移,并且在 DB 架构上有 name(字符串)和 email(字符串)。
users_controller.rb 上创建用户所需的最少代码行是多少?
我问这个问题的原因直到现在,我仍然不能 100% 确定哪个代码行实际执行了所需的操作。 rails 真的足够聪明,可以识别这些特定的关键字index、new、create、destroy、show、edit 和update,还是它们是任意的?如果 rails 足够聪明,可以检测到这七个关键字,只需列出方法 (def destroy; #<no code>; end),DELETE 用户方法是否会自动访问,或者我必须实际说 def destroy; User.find(params[:id]).destroy; end 才能使用 DELETE 用户方法?在 users_controller.rb 上,我最终从 railstutorial 获得了这个精心设计的代码。
...
def create
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
end
...
仅在 Users_controller 上拥有 def create 就足以让 Rails 创建用户吗?
def create
end
或者我至少需要User.new,或者更多代码来创建新用户?
【问题讨论】:
标签: ruby-on-rails rest controller railstutorial.org