sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoid m/ skinner, attr_accessible --> Ingen metode fundet

Ok, jeg har fundet problemet.

Først og fremmest går jeg ud fra, at du bruger Rails 4. Grunden til at du får denne fejl er, at attr_protected og attr_accessible er blevet fjernet fra skinner 4 og placeret i deres egen perle. Rails opfordrer nu til en ny beskyttelsesmodel. Du kan læse om dette i README . Hvis du gerne vil fortsætte med at bruge den gamle adfærd, skal du inkludere protected_attributes perle . Håber det hjælper.

EDIT:Jeg har tilføjet en afklaring nedenfor, da dette sandsynligvis vil være et almindeligt problem med brugere til at opgradere til skinner 4.

Hvis du gerne vil fortsætte med at bruge attr_accessible , dvs. Rails 3-vejs, skal du blot tilføje gem protected_attributes til din Gemfile.

Hvis du gerne vil begynde at gøre tingene på Rails 4-vejen, må du ikke længere bruge attr_accessible . I stedet skal du flytte attributtilladelseslogikken ind i controlleren. Her er et eksempel:

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. MongoDB dropIndex()

  2. Hvordan får man data fra MongoDb ved hjælp af mongoose?

  3. MongoDB til at bruge Sharding med $lookup Aggregation Operator

  4. Dokumentstørrelse i MongoDb