2011-09-08 69 views
1

我想将逻辑放在模型中而不是控制器中。如何从一个控制器在rails中访问模型中的方法

class UsersController < ApplicationController 
    def somemethod 
    d = User.methodinmodel 
    end 
end 

class User < ActiveRecord::Base 

    def methodinmodel 
    "retuns foo" 
    end 
end 

我得到一个错误,没有methodinmodelUser模型。

为什么?

回答

1

如果你希望能够在一般调用methodinmodelUser类,而不是特定的用户,您需要使用self,使之成为类方法:

class User < ActiveRecord::Base 
    def self.methodinmodel 
    "returns foo" 
    end 
end 

您当前的方法定义只会工作如果你把它称为一个用户:

@user = User.create! 
@user.methodinmodel # Works. 
User.methodinmodel # Doesn't work. 

使用新的实现使用self将允许你把它想:

User.methodinmodel # Works. 
相关问题