2016-11-22 3 views
0

Например, если у меня есть метод в моей модели, который принимает строку из моего контроллера. Могу ли я назвать это в другом месте в моей модели, которая вернет логическое значение? Или есть лучший способ, возможно, установив переменную?Как вызвать метод с аргументами другого метода в модели Rails

class Object 
    def method_true?(args) 
    ['a', 'b'].include?(args) 
    end 

    def do_stuff 
    method_true? #outcome of method_true? 
    end 
end 
+0

Метод должен работать нормально, если вы дадите аргументы правильно. – titan

+0

Вы получили его? –

+0

Да, спасибо! Я сделал это менее взломанным способом и написал это в контроллере (где он должен был быть в первую очередь). –

ответ

0

Заделка Object класс не лучшая идея.

Больше Rails путь будет создать модуль с этими методами и смешивая его в свои модели (или, в ActiveRecord::Base, если вы уверены, что вам это нужно везде):

module ActiveRecordExtentions 
    def method_true?(args) 
    ['a', 'b'].include?(args) 
    end 

    def do_stuff 
    method_true? #outcome of method_true? 
    end 
end 

# /initializers/activerecord_extentions.rb 
ActiveRecord::Base.send(:include, ActiveRecordExtentions) # or extend, you decide 

Теперь методы доступны во всех модели, наследующие от ActiveRecord::Base.

Смежные вопросы