[RUBY-ON-RAILS] 정의되지 않은 방법 attr_accessible
RUBY-ON-RAILS정의되지 않은 방법 attr_accessible
나는 레일 다소 새로운 오전 나는 사용자 로그인을 만들려고하고 있습니다. 나는 여기에있는 튜토리얼을 통해 갔다. 마지막에 그것은 나를 대량 할당은 "attr_accessible"를 추가했다. 그러나 나는 다음과 같은 오류를 가지고 있다고했을 때 :
undefined method `attr_accessible' for #<Class:0x007ff70f276010>
이 게시물에 나는 보았다는 것을 나는 <액티브 :: 자료가 필요합니다. 하지만이 포함되어 있음을해야합니까. 여기 내 사용자 모델에 대한 코드는 다음과 같습니다
class User < ActiveRecord::Base
attr_accessor :password
EMAIL_REGEX = /\A[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\z/i
validates :username, :presence => true, :uniqueness => true, :length => { :in => 3..20 }
validates :email, :presence => true, :uniqueness => true, :format => EMAIL_REGEX
validates :password, :confirmation => true #password_confirmation attr
validates_length_of :password, :in => 6..20, :on => :create
before_save :encrypt_password
after_save :clear_password
attr_accessible :username, :email, :password, :password_confirmation
def encrypt_password
if password.present?
self.salt = BCrypt::Engine.generate_salt
self.encrypted_password= BCrypt::Engine.hash_secret(password, salt)
end
end
def clear_password
self.password = nil
end
end
이 문제의 원인이 될 수 있는지에 대한 다른 아이디어 정말 감사하겠습니다, 감사합니다!
편집 : 레일에 4.1. 그것과 같은 더 이상 적용되지 않습니다. 감사합니다 fotanus
해결법
-
==============================
1.레일 4.1 허용 없음 대량 할당하지
레일 4.1 허용 없음 대량 할당하지
대신 attr_accessible있는의 : 사용자 이름 : 이메일 : 비밀번호 : 모델의 password_confirmation 강한 매개 변수를 사용합니다. 당신은 당신의 UsersController에서이 작업을 수행 할 수 있습니다 :
def user_params params.require(:user).permit(:username, :email, :password, :password_confirmation) end
다음 컨트롤러 액션에 user_params 메서드를 호출합니다.
-
==============================
2.레일 4.1 허용 없음 대량 할당하지
레일 4.1 허용 없음 대량 할당하지
당신이 뭔가를 시도해야합니다.
class Person has_many :pets accepts_nested_attributes_for :pets end class PeopleController < ActionController::Base def create Person.create(person_params) end ... private def person_params # It's mandatory to specify the nested attributes that should be whitelisted. # If you use `permit` with just the key that points to the nested attributes hash, # it will return an empty hash. params.require(:person).permit(:name, :age, pets_attributes: [ :name, :category ]) end end
보내다
https://github.com/rails/strong_parameters
-
==============================
3.이 보석은 당신의 gemfile에 있는지, 당신이 설치되어 보석 'protected_attributes'을 확인하고 터미널 설치 번들 실행합니다. 그런 다음 서버를 다시 시작합니다.
이 보석은 당신의 gemfile에 있는지, 당신이 설치되어 보석 'protected_attributes'을 확인하고 터미널 설치 번들 실행합니다. 그런 다음 서버를 다시 시작합니다.
from https://stackoverflow.com/questions/23437830/undefined-method-attr-accessible by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 유효성 수용은 항상 실패 (0) | 2020.03.02 |
---|---|
[RUBY-ON-RAILS] 액티브가 포함되어 있습니다. 포함 된 열을 지정합니다 (0) | 2020.03.02 |
[RUBY-ON-RAILS] 번역이없는 경우 기본 언어로 다시 가을 (0) | 2020.03.02 |
[RUBY-ON-RAILS] Heroku가 - 현재의 디스플레이 해시 커밋 (0) | 2020.03.01 |
[RUBY-ON-RAILS] 레일 내측 텍스트 또는 HTML과 LINK_TO의 IMAGE_TAG (0) | 2020.03.01 |