我升级到 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