目前我正在进行大量的 Rails 3 实践,我正在开发一个身份验证系统,并且正在学习有关 Railscasts 的教程。来自 Railscasts 的 Ryan 对该教程进行了一些更新,并进行了一些细微的更改以利用 Rails 3.1
例如有_安全_密码
所以我的 Sessions_controller 中的一些代码更改为:
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by_username(params[:username])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_path, :notice => "Logged In"
else
flash.now.alert = "Invalid Credentials"
render "new"
end
end
def destroy
session[:user_id] = nil
redirect_to root_path, :notice =>"Logged Out"
end
end
我想知道的是创建方法/操作中的某些代码是否应该在模型中?放置此代码是好还是坏做法?
当我想以正确的方式学习而不是养成坏习惯时,我应该遵循哪些规则,因为我已经超越了学习框架的那部分,在这个部分中,事情通常开始变得有意义,而不是变得更有意义。
感谢您的建议..
我特别想知道的是..
1. 程序员什么时候知道代码何时属于模型?他/她如何做出决定?
最佳答案
这是面向对象编程中最重要的问题之一。
一切都与责任有关。如果您认为模型负责该功能,请将代码放入模型中。
在您的示例中您会看到:
SessionController
仅负责创建和销毁用户 session 。用户
负责身份验证。
所有业务逻辑都进入您的模型中。您的 Controller 负责填充您的 View 、处理用户的输入并将用户送上路。 View只是显示信息,几乎不包含任何逻辑(如果有的话)。
另外:查看现有项目以获取灵感(例如 Shopify )。
关于ruby-on-rails - 代码何时属于 ruby on Rails 中的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546857/