0

У меня есть простое update действие в Rails 4 контроллера:Контрольное действие содержит более одного метода вызова метода?

#more stuff here 
def update 
    if @user.update(user_params) 
    flash[:notice] = "User #{@user.username} updated" 
    redirect_to users_path 
    else 
    render 'edit' 
    end 
end 
private 
def set_user 
    @user = User.find(params[:id]) 
end 

Однако RubyMine это предупреждение о @user.update и @user.username:

Эта проверка предупреждает, если действие контроллера содержит метод более чем один модельный вызов , после начального .find или .new. Рекомендуется внедрить всю бизнес-логику внутри класса модели и использовать один метод для доступа к ней.

Я не вижу more than one model method call здесь. Может кто-нибудь объяснить, что происходит?

EDIT - У меня есть что-то подобное в create действие без предупреждает, так что я считаю, что что-то делать с user_params ...

def create 
    if @user.save 
    flash[:notice] = "User #{@user.username} created" 
    redirect_to users_path 
    else 
    render 'new' 
    end 
end 

ответ

2

Предполагая username является метод в модели, где вы сливаете пользователя first_name и last_name.

Я думаю, @user.update(user_params) и @user.username являются вашими вызовами обоих методов. Один, который сохраняет модель, другую, которая задает полное имя пользователя во флэш-уведомлении.

Это всего лишь предупреждение от рубинов, которое просто рекомендует вам сделать некоторые действия, а не следить за ними.

+0

'username' - это просто атрибут' User', и я не получаю то же предупреждение для действия create ... – gabrielhilal

+0

'username' по-прежнему является вызовом метода для модели User, но не может сказать почему он не даст вам то же предупреждение для создания действия тоже. – rmagnum2002