gpt4 book ai didi

ruby-on-rails-3 - 事件模型 MassAssignmentSecurity 错误

转载 作者:行者123 更新时间:2023-12-03 23:37:35 25 4
gpt4 key购买 nike

我遇到错误:我正在使用 Facebook Integration 开发网络。我是 ruby​​ on rails 的新手。你能帮我解决一下吗?

ActiveModel::MassAssignmentSecurity::Error in SessionsController#create

Can't mass-assign protected attributes: name

这是我的 Controller :

class SessionsController < ApplicationController
def create
#render :json => request.env['omniauth.auth'].to_yaml
auth = request.env['omniauth.auth']
unless @auth = Authorization.find_from_hash(auth)
@auth = Authorization.create_from_hash(auth, current_user)
end

self.current_user = @auth.user
render :text => "Welcome, #{current_user.name}."
end
end

这是我的用户模型:

class User < ActiveRecord::Base
has_many :authorizations
attr_accessor :name, :uid, :provider

def self.create_from_hash!(hash)
#create(:name => hash['user_info']['name'])
create(:name => hash.info.name)
end
end

这是我的授权模型:

class Authorization < ActiveRecord::Base
belongs_to :user
validates_presence_of :user_id, :uid, :provider
validates_uniqueness_of :uid, :scope => :provider

def self.find_from_hash(hash)
find_by_provider_and_uid(hash['provider'], hash['uid'])
end

def self.create_from_hash(hash, user = nil)
user ||= User.create_from_hash!(hash)
Authorization.create(:user => user, :uid => hash['uid'], :provider => hash['provider'])
end
end

我该如何解决这个问题..提前致谢:)

最佳答案

你肯定启用了mass assignment protection (在配置文件中使用 config.active_record.whitelist_attributes = true),因此您需要明确指出哪些属性可以通过 update_attributes 等方法更新。您可以使用 attr_accessible 来完成。

User 模型中,替换以下行(看起来没用)

attr_accessor :name, :uid, :provider

attr_accessible :name, :uid, :provider

请参阅与 attr_accessorattr_accessible 相关的问题以获取更多信息 here , herehere

关于ruby-on-rails-3 - 事件模型 MassAssignmentSecurity 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008751/

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