0

我升级到 Rails 4,现在我不再能够在我的应用程序上注册用户。我的画廊(carrierewave)好像坏了。我已经检查了代码,并没有注意到任何会阻止它现在工作的东西。我得到一个未定义的方法“画廊”,它指向 def setup_gallery: self.galleries << Gallery.create 和 def create: if @user.save

重新审视我的代码会很棒。

用户控制器:

 class UsersController < ApplicationController
  respond_to :html, :json

  def settings
    @user = User.find(id_params)
  end

  def new
    @user = User.new
  end

  def profile
    @profile = User.profile
  end

  def create
    @user = User.new(user_params)
    if @user.save
      UserMailer.registration_confirmation(@user).deliver
      session[:user_id] = @user.id
      redirect_to root_url, notice: "Thank you for signing up!"
    else
      render "new"
    end
  end

  def show
    @user = User.find(id_params)
  end

    def edit
      @user = User.find(id_params)
end

  def index
    @users = User.all
  end

  def destroy
     User.find(id_params).destroy
     flash[:success] = "User deleted."
     redirect_to users_url
   end

def update
    @user = if current_user.has_role?(:admin)
       User.find(id_params)
     else
       current_user
     end
    @user.update_attributes(user_params)
    respond_with @user
    end

    private


      def user_params
   params.require(:user).permit(:name, :email, :username, :password, :zip_code, :birthday, :role)
 end

     def id_params
       params.require(:id).permit(:name)
     end
end

用户型号:

# models/user.rb
  after_create :setup_gallery

  def received_messages
      Message.received_by(self)
    end

 def unread_messages?
   unread_message_count > 0 ? true : false
 end

 def unread_messages
   received_messages.where('read_at IS NULL')
 end

 def sent_messages
   Message.sent_by(self)
 end

 # Returns the number of unread messages for this user
 def unread_message_count
   eval 'messages.count(:conditions => ["recipient_id = ? AND read_at IS NULL", self.user_id])'
 end

  def to_s; username
  end

  def has_role?(role_name)
    role.present? && role.to_sym == role_name.to_sym
  end

  def send_password_reset
    generate_token(:password_reset_token)
    self.password_reset_sent_at = Time.zone.now
    save!
    UserMailer.password_reset(self).deliver
  end

  def generate_token(column)
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while User.exists?(column => self[column])
  end

  private
  def setup_gallery
     self.galleries << Gallery.create
   end
end

照片控制器:

class PhotosController < ApplicationController

  def new 
    @photo = Photo.new
  end

  def create
    @photo = Photo.new(photo_params)
    @photo.user = current_user
    if @photo.save
      flash[:notice] = "Successfully created photos."
      redirect_to :back
    else
      render :action => 'new'
    end
  end

  def edit
    @photo = Photo.find(id_params)
  end

  def update
    @photo = Photo.find(id_params)
    if @photo.update_attributes(photo_params)
      flash[:notice] = "Successfully updated photo."
      redirect_to @photo.gallery
    else
      render :action => 'edit'
    end
  end

  def destroy
    @photo = Photo.find(id_params)
    @photo.destroy
    flash

[:notice] = "成功销毁照片。" redirect_to @photo.gallery 结束

私人的

def user_params params.require(:user).permit(:name) end

def id_params params.require(:id).permit(:name) end end

4

1 回答 1

1

经过反复试验,我发现我必须更改用户模型中的私有方法。

有效的是,

 Gallery.create(user: self)

感谢那些响应帮助的人!

于 2013-08-12T16:37:51.510 回答