MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongoid w / Rails, attr_accessible -> Không tìm thấy phương pháp nào

Ok, tôi đã tìm thấy vấn đề.

Trước hết, tôi cho rằng bạn đang sử dụng Rails 4. Lý do bạn gặp lỗi này là do attr_protectedattr_accessible đã bị xóa khỏi Rails 4 và được đặt trong gem của riêng chúng. Rails hiện đang khuyến khích một mô hình bảo vệ mới. Bạn có thể đọc về điều này trong README . Nếu bạn muốn tiếp tục sử dụng hành vi cũ, bạn phải bao gồm đá quý protected_attributes . Hy vọng điều đó sẽ hữu ích.

CHỈNH SỬA:Tôi đã thêm phần giải thích bên dưới vì đây có thể là sự cố phổ biến với người dùng khi nâng cấp lên đường ray 4.

Nếu bạn muốn tiếp tục sử dụng attr_accessible , tức là theo cách Rails 3, chỉ cần thêm gem protected_attributes vào Gemfile của bạn.

Nếu bạn muốn bắt đầu thực hiện mọi thứ theo cách Rails 4, bạn không được sử dụng attr_accessible nữa . Thay vào đó, bạn phải di chuyển logic quyền thuộc tính vào bộ điều khiển. Đây là một ví dụ:

class UsersController < ApplicationController
  def create
    # Using params[:user] without calling user_params will throw an error because 
    # the parameters were not filtered. This is just some Rails magic.
    @user = User.new user_params
    if @user.save
      # Do whatever
    else
      render action: :new
    end
  end

  private
  def user_params
    # params.require(:user) throws an error if params[:user] is nil

    if current_user.nil? # Guest
      # Remove all keys from params[:user] except :name, :email, :password, and :password_confirmation
      params.require(:user).permit :name, :email, :password, :password_confirmation
    elsif current_user.has_role :admin
      params.require(:user).permit! # Allow all user parameters
    elsif current_user.has_role :user
      params.require(:user).permit :name, :email, :password, :password_confirmation
    end
  end


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. TypeError:callback.apply không phải là một hàm sau allowDiskUse

  2. Thuộc tính Mongoose 'x' không tồn tại trên loại 'Tài liệu'

  3. Nhóm theo ngày / tháng / tuần trên cơ sở phạm vi ngày

  4. Có cách nào để tạo codec Mongo tự động không?

  5. cơ sở dữ liệu mongodb với Java play 2.0