Ruby on rails 代码何时属于RubyonRails中的模型?

Ruby on rails 代码何时属于RubyonRails中的模型?,ruby-on-rails,ruby-on-rails-3,rubygems,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Rubygems,Ruby On Rails 3.1,目前正在进行大量Rails3实践,我正在开发一个身份验证系统,并且正在学习railscasts教程。railscasts的Ryan对该教程进行了某种更新,并对rails 3.1进行了一些小改动 e、 g.有安全的密码吗 因此,我的会话控制器中的一些代码更改为: class SessionsController < ApplicationController def new end def create user = User.find_by_username(para

目前正在进行大量Rails3实践,我正在开发一个身份验证系统,并且正在学习railscasts教程。railscasts的Ryan对该教程进行了某种更新,并对rails 3.1进行了一些小改动

e、 g.有安全的密码吗

因此,我的会话控制器中的一些代码更改为:

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
class sessioncontroller“已登录”
其他的
flash.now.alert=“无效凭据”
呈现“新”
结束
结束
def销毁
会话[:用户\u id]=无
重定向到根路径:注意=>“注销”
结束
结束
我想知道的是,create方法/操作中的一些代码是否应该在模型中?有这个代码是好的还是坏的做法

我应该遵循什么规则,因为我想学习正确的方法,而不是养成坏习惯,因为我已经通过了学习框架的这一部分,在这一部分中,事情开始变得更有意义,而不是没有意义

忠告不胜感激

我特别想知道的是..
1.程序员何时知道代码何时属于模型?他/她是如何做出决定的?

我的建议:

在用户模型中(伪代码):

我认为你应该始终保持控制器尽可能小。
OOP中最重要的思想是封装,因此您应该在用户类中编写用户的所有操作,只返回客户机代码(在本例中为控制器)控制器需要完成的工作-将用户id添加到会话中。

这是OO编程中最重要的问题之一

这都是关于责任的。如果您认为模型负责该部分功能,请在模型中放置代码

在您的示例中,您可以看到:

  • SessionController
    只负责创建和销毁用户的会话
  • 用户负责身份验证
所有业务逻辑都会进入您的模型中。您的控制器负责填充视图、处理用户的输入并在途中发送用户。视图仅显示信息,几乎不包含任何逻辑(如果有)

另外:看看现有项目的灵感(例如,)

function authenticate(username, pass) {
  /*get user by name
  return user_id (or user object if you need some user data in view) if auth ok,   otherwise false
  */
}