Как связать current_user на более 2 моделей при создании? - PullRequest
0 голосов
/ 10 марта 2012

Я хотел бы связать current_user, когда я связываю эти объекты в Bar create, другое дело, верно ли это?Или я должен сделать это на контроллере типа?

Модель бар

belongs_to :type
belongs_to :user

Тип модели

has_many :bars

Модель пользователя

has_one :bar

Бар контроллер

def new
  @bar = Bar.new(:type_id => @type.id)
end

def create
  @bar = current_user.build_bar(params[:bar].merge(:type_id => @type.id))
  if  @bar.save     
  flash.now[:success] = "wohoo!"
    render  :edit
  else
    render  :new 
  end
end

1 Ответ

1 голос
/ 10 марта 2012

Ниже приведен общий подход Rails к созданию модели с помощью ассоциации - при условии, что current_user установлен во время входа в систему или где-либо еще, а @type установлен соответствующим образом в before_filter.

В Bar Controller:

def new
  @bar = current_user.bar.build
end

def create
  @bar = current_user.bar.build(params[:bar].merge(:type_id => @type.id))
  if  @bar.save     
    flash.now[:success] = "wohoo!"
    redirect_to @bar
  else
    render  :new 
  end
end

Построение через ассоциацию таким образом автоматически установит для поля user_id на панели значение current_user.id.

Обратите внимание, что вы, вероятно, захотите redirect_toа не render в случае успеха.Если вы хотите перейти к редактированию напрямую, тогда пользователь redirect_to edit_bar_path(@bar).Если вы хотите узнать больше информации о причинах, обратитесь к Руководству по макетам и рендерингу , в котором обсуждается перенаправление render v и последствия каждого из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...