gpt4 book ai didi

ruby-on-rails - Mongoid w/Rails,attr_accessible --> "No method found"

转载 作者:行者123 更新时间:2023-12-02 03:26:15 26 4
gpt4 key购买 nike

  • 生成的 Rails 应用程序没有 Active Record
  • 为 Mongoid 添加了适当的 gem(Mongodb 和 Mongoid)
  • 在 config/中生成了带有 Rails 支持的 mongoid.yml 文件
  • 使用典型的 CRUD 路由创建了好友模型和用户 Controller

一切正常,除了当我尝试做批量作业时,我得到:“ friend :类的未定义方法‘attr_accessible’”

模型, friend .rb:


class Friend
include Mongoid::Document
field :first_name, :type => String
field :last_name, :type => String
field :adjective, :type => String
attr_accessible :first_name, :last_name, :adjective
end
development:
sessions:
default:
database: first_development
hosts:
- localhost:27017
options:
options:
test:
sessions:
default:
database: first_test
hosts:
- localhost:27017
options:
consistency: :strong
max_retries: 1
retry_interval: 0

想法?

最佳答案

好的,我已经找到问题了。

首先,我假设您使用的是 Rails 4。您收到此错误的原因是 attr_protectedattr_accessible 已从 Rails 4 中删除并放置在他们自己的 gem 。 Rails 现在正在鼓励一种新的保护模型。您可以在README中阅读相关内容。 。如果您想继续使用旧行为,则必须包含 protected_attributes gem 。希望有帮助。

编辑:我在下面添加了说明,因为这可能是升级到 Rails 4 的用户的常见问题。

如果您想继续使用 attr_accessible,即 Rails 3 方式,只需将 gem protected_attributes 添加到您的 Gemfile 中即可。

如果您想开始以 Rails 4 的方式进行操作,则不得再使用 attr_accessible。相反,您必须将属性权限逻辑移至 Controller 中。这是一个例子:

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

关于ruby-on-rails - Mongoid w/Rails,attr_accessible --> "No method found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17135974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com