2011-09-08 106 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. 
相關問題