私の作成アクションでは、メソッドcreateのような新しい動作。作成のような新しい動作
def create
@page = Page.new(params[:page].merge(:user_id => current_user.id))
if @page.save
flash[:notice] = t("success")
redirect_to pages_path
else
render :new
end
end
ActiveRecordは新しいオブジェクトをデータベースに作成しますが、新しいものはparamsで使用しています。 Page.newはコントローラーの新しいアクションでうまく動作します。理由は何でしょうか?私のモデルには、コールバック(before_save、before_createなど)のオーバーライドされたメソッドはありません。どんな助けもありがとう。
UPDATE - デバッガからコード
.../app/controllers/pages_controller.rb:48
@page = Page.new(params[:page].merge(:user_id => current_user.id))
(rdb:25) @page
nil
(rdb:25) n
.../app/controllers/pages_controller.rb:49
if @page.save
(rdb:25) @page
#<Page id: 80 ... >
(rdb:25) Page.last
#<Page id: 80 ... >
(rdb:25) @page.save
false
dude page.saveがそのことを引き起こしています:P –
「Page.new」を呼び出してデータベースに新しいレコードを作成する方法を知っていますか? page.save'。 '@ page.save'はデータベースに新しいレコードを作成します。これは何が起こっているのですか?このコードで何をしたいですか? – rubyprince
私のモデルにバリデーションがあるので、失敗した場合、@ page.saveはfalseを返し、アプリケーションはアクションnewをレンダリングします。確かに、Page.new(params [:page] .merge(:user_id => current_user.id))はデータベースにレコードを保存しています - デバッガで見つけました – zachar