2014-07-06 55 views
0

我知道這聽起來像一個荒謬的問題,但我試圖解決潛在僱主給出的挑戰。我有一個架構和一些模型與他們的方法。幾乎所有的方法都沒有變量的傳遞意義無的方法是這樣的:有沒有辦法模型方法可以與變量一起使用而不顯式傳遞它們?

def this_is_my_method(variable) 
    #stuff 
end 

def this_is_my_method variable 
    #stuff 
end 

但也有明確變量的使用這樣的方法:

def build_address 
    if variable 
    # do something 
    end 
end 

在某些情況下,模型方法是否只知道某些參數或變量,是否有RoR方式?

所以,如果我的控制器是recieving看起來像這樣PARAMS:

?my_method[begin]=1&my_method[end]=5 

將模型方法「my_method」知道什麼是「開始」和「結束」在哪裏?

def my_method 
    if self.begin == self.end 
    # do something 
    else 
    # do something else 
    end 
end 
+0

創建該變量作爲屬性訪問器.........當你想通過分配給對象否則你會得到零..... – Sanket

回答

0

請記住,模型方法可以訪問該模型實例的所有屬性(以及其他方法)。

因此(例如)這將是一個有效的模型方法。

class User < ActiveRecord::Base 

    def full_name 
    [first_name, last_name].join(' ') 
    end 

end 

這是服用屬性user.first_name和屬性user.last_name並結合他們創造一個新的方法user.full_name

編輯爲@Sanket曾建議你可以傳遞值到模型中,如果你讓他們的屬性訪問器。 ..

def SomeController < ApplicationController 

    def some_controller_method 

    @user = User.find(params[:id]) 

    @user.begin = params[:begin] 
    @user.end = params[:end] 
    @user.some_model_method 
    end 
end 

def User < ActiveRecord::Base 
    attr_accessor :begin, :end 
    def some_model_method 
    if self.begin == self.end 
     # do something 
    else 
     # do something else 
    end 
    end 
end 

雖然坦率地說,我寧願只是將值作爲方法參數傳遞。

+0

好吧,修改我的答案...如果我沒有讓你的問題完全瞭解讓我知道。 – SteveTurczyn

相關問題