人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

has_xxxの関係を通して外部キーを自動で設定するには

acts_as_authenticatedプラグインを導入し、ユーザーのモデルに1対多の関係を張りました。

class User < ActiveRecord::Base
has_many :portfolios
(省略)
end

class Portfolio < ActiveRecord::Base
belongs_to :user
end

Userを通してPortfolioを登録すると外部キー:user_idは自動的に設定されると参考書に書いてありました。

current_user.portfolios.create(params[:portfolio]) とすると:user_idに値が入っているのですが、

@portfolio = current_user.portfolios.new(params[:portfolio])
@portfolio.save とすると:user_idに値が入っていないようでエラーになります。

なぜcreateメソッドを使用すると:user_idの値が設定され、new⇒saveメソッドを使用すると:user_idの値が設定されないのでしょうか?
どちらも(params[:portfolio])で入力フォームの値を取得しているので、片方がエラーになる理由が良く分かりませんでした。

入力フォームには:user_idの値を入力する欄を設けてありません。
また、current_userのコードは以下になっているようです。

def current_user
03. @current_user ||= (session[:user] && User.find_by_id(session[:user])) || :false
04.end

●質問者: tyn
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.new ActiveRecord base Class def
○ 状態 :キャンセル
└ 回答数 : 0/0件

回答がありません
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ