0

photo_albumsのユーザーIDcurrent_userとアルバムタイトル「PostsAlbum」を含む行をデータベースのテーブルに追加したいと思いbefore_createます。

  • ユーザーは多くのPhotoAlbumsを持っています
  • PhotoAlbumはユーザーに属しています

before_create :build_profileプロファイルテーブルにユーザーの個人情報用の空の行を作成するために使用して、同様のことを実現します。このコードは私のユーザーモデルの中にあります。

私は似たようなことを達成したいのですが、私のphoto_albumsテーブルで。ユーザーの作成時に、photo_albumsすべてのマイクロポスト関連の画像を保存するアルバムをテーブルに作成します。ユーザーの作成時に、ユーザーIDを含む行が必要album title = "post album"です。

モデルスニペット

class User < ActiveRecord::Base
  has_one  :profile, :autosave => true
  has_many :photo_albums
  has_many :microposts

  before_create :build_profile

コントローラーのcreateアクション

def create
  @user = User.new(params[:user])   
  respond_to do |format|
    if @user.save 
      login @user
      UserMailer.join_confirmation(@user).deliver
      format.js { render :js => "window.location = '#{root_path}'" } 
    else
      format.js { render :form_errors }
    end
  end
end

これどうやってするの?ユーザーがフォトアルバムをたくさん持っているので、使用できないことに注意してくださいbuild_photo_album。ガイドの情報を読みましたが、それでも理解できません。解決策をいただければ幸いです。

4

1 に答える 1

2

次のようなカスタム コールバックを作成するより良い解決策はありません。

UPDATED ( params で定義する必要さえありません。自動的に設定されuser_id => self.idます)PhotoAlbum.create

after_create :build_default_photo_album

def build_default_photo_album
  self.photo_albums << PhotoAlbum.create(:title => "post album")
end
于 2012-05-05T22:50:43.690 に答える