0
나는 뭔가 확실한 문제가 있지만, 기본적인 것은 물론 여기에 좋은 대답을 찾는 데 어려움이 있습니다.레일 연결에서의 질량 할당 혼란
##Authorization.rb
class Authorization < ActiveRecord::Base
attr_accessible :provider, :uid, :user_id
belongs_to :user
validates :provider, :uid, :presence => true
def self.find(auth_hash)
find_by_provider_and_uid(auth_hash["provider"],
auth_hash["uid"])
end
def self.create_with_hash(auth_hash)
#if they've already registered, then just return that authorization
unless auth = find_by_provider_and_uid(auth_hash["provider"],
auth_hash["uid"])
user = User.create(name: auth_hash["info"]["name"],
email: auth_hash["info"]["email"],
nickname: nil,
firstname: auth_hash["info"]["first_name"],
location: auth_hash["user_location"]
)
auth = create(user: user,
provider: auth_hash["provider"],
uid: auth_hash["uid"])
end
auth
end
end
그리고 내 사용자 모델 :
나는 사용자 테이블과 권한 부여 테이블이 여기에 내 모델입니다 컨트롤러에서
##User.rb
require 'bcrypt'
class User < ActiveRecord::Base
include BCrypt
#accessible and settable properties
attr_accessible :name, :email, :nickname, :firstname, :location
#relations
has_many :authorizations, dependent: :destroy
#validations
validates :name, :email, :firstname, :presence => true
validates :email, :uniqueness => true
validates :nickname, :uniqueness => true
#always make sure their email and nickname are lowercased
def before_validation(user)
user.email.downcase!
user.email = Password.create(email)
user.nickname.downcase!
end
def after_save(user)
user.email = Password.new(user.email)
end
def is_nickname_available?(nickname)
Users.find_by_nickname(nickname.downcase).blank?
end
def add_nickname(user_id, nickname)
#todo: error handling
user = Users.find(user_id).update_attribute(nickname: nickname)
end
def add_provider(auth_hash)
#Check if the provider already exists, so we don't add it twice
unless
authorizations.find_by_provider_and_uid(auth_hash["provider"],
auth_hash["uid"])
Authorization.create user_id:self.id,
provider: auth_hash["provider"],
uid: auth_hash["uid"]
end
end
end
가, 내가하려고하면 : Authorization.create_with_hash(auth_hash)
, 오류가 발생합니다.
Can't mass-assign protected attributes: user
auth = create(user: user, provider: auth_hash["provider"], uid: auth_hash["uid"])
내 Authorization.rb mod에 있습니다. 엘자.
저는 이것에 대해 아주 새로운 것이지만 이것이 작동하지 않는 이유에 대해서는 명확하지 않습니다. 누군가 내가 잘못하고있는 것을 설명 할 수 있습니까? 무스타파