MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoid w/ Rails, attr_accessible --> Nie znaleziono metody

Ok, znalazłem problem.

Przede wszystkim zakładam, że używasz Rails 4. Powodem, dla którego otrzymujesz ten błąd, jest to, że attr_protected i attr_accessible zostały usunięte z Rails 4 i umieszczone we własnym klejnocie. Rails zachęca teraz do nowego modelu ochrony. Możesz o tym przeczytać w README . Jeśli chcesz nadal korzystać ze starego zachowania, musisz dołączyć klejnot protected_attributes . Mam nadzieję, że to pomoże.

EDYCJA:dodałem wyjaśnienie poniżej, ponieważ prawdopodobnie będzie to częsty problem z uaktualnieniem do szyn 4.

Jeśli chcesz kontynuować korzystanie z attr_accessible , tj. Rails 3 way, po prostu dodaj gem protected_attributes do pliku Gemfile.

Jeśli chcesz zacząć robić rzeczy w sposób Rails 4, nie musisz już używać attr_accessible . Zamiast tego należy przenieść logikę uprawnień atrybutów do kontrolera. Oto przykład:

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. Uwierzytelnianie MongoDb przy użyciu Hibernate OGM

  2. Różnica między cursor.count() i cursor.size() w MongoDB

  3. Suma zagnieżdżonej tablicy w node.js mongodb

  4. Instalowanie MongoDB w WSL

  5. Jak usunąć wszystkie elementy z kolekcji MongoDB