MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoid w/ Rails, attr_accessible --> Не е намерен метод

Добре, открих проблема.

Първо, предполагам, че използвате Rails 4. Причината да получавате тази грешка е, че attr_protected и attr_accessible са премахнати от Rails 4 и поставени в техния собствен скъпоценен камък. Сега Rails насърчава нов модел на защита. Можете да прочетете за това в README . Ако искате да продължите да използвате старото поведение, трябва да включите protected_attributes gem . Надявам се, че това помага.

РЕДАКТИРАНЕ:Добавих разяснение по-долу, тъй като това вероятно ще бъде често срещан проблем с потребителите при надграждане до rails 4.

Ако искате да продължите да използвате attr_accessible , т.е. начинът на Rails 3, просто добавете gem protected_attributes към вашия Gemfile.

Ако искате да започнете да правите нещата по начина на Rails 4, вече не трябва да използвате attr_accessible . Вместо това трябва да преместите логиката за разрешение за атрибут в контролера. Ето един пример:

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. Конектор за мивка на Kafka:Няма зададени задачи дори след рестартиране

  2. Копирайте папка със заместващ знак от докер контейнер на хост

  3. Изпратете заявка към масив MongoDB и сортирайте с най-съвпадащите елементи

  4. Мога ли да прочета csv файл вътре в Javascript файл на Mongo Shell?

  5. Как да получите идентификатора на обекта в PyMongo след вмъкване?