많은 갤러리와 카테고리 (둘 다 belongs_to : user 인 개별 모델)가있는 사용자 모델이 있습니다. "Everything"이라는 기본 범주와 "Everything"이라는 기본 갤러리를 만들고 싶습니다.@ 사용자가 활성화되면 해당 사용자에 속한 객체를 생성하십시오.
내 앱, 특히 사용자 생성 및 활성화 부분에 대한 Mike Hartl의 튜토리얼을 적용하고 있습니다. 따라서, 사용자가이 코드를 사용하여 만든 후 :
User.rb
def create
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = 'Please check your email to activate your account.'
redirect_to root_url
else
render 'new'
end
end
기동 이메일이 사용자에게 전송하고이 링크를 클릭하면 그것은 자신의 계정을 활성화합니다. 활성화 시점에서 activated
열이 false
에서 true
으로 전환되므로 "모든 것"갤러리와 카테고리를 생성하고 싶습니다. 내 마음 속에서 이것이 일어날 수있는 가장 논리적 인 곳은 한 번만 발동 될 가능성이 있기 때문입니다. 그렇게하면 누군가가 자신의 계정에 로그온 할 때마다 만들어지는 "Everything"카테고리와 갤러리에 대해 걱정할 필요가 없습니다.
나는이를 만들려고 오전 방법은 계정이 활성화 직후 다음 코드를 삽입하는 것입니다 :
이account_activations_controller.rb
class AccountActivationsController < ApplicationController
def edit
user = User.find_by(email: params[:email])
if user && !user.activated? && user.authenticated?(:activation, params[:id])
user.activate
user.categories = user.categories.build(name: 'Everything')
log_in user
flash[:success] = 'Account activated!'
redirect_to user
else
flash[:danger] = 'Invalid activation link'
redirect_to root_url
end
end
end
내 문제가 있다는 것입니다 :이,
user.categories = user.categories.build(name: 'Everything')
그래서 그 모습을 사용자가 생성되는 동안 "모든 것"카테고리가 아니므로 조정할 수없는 다음 오류가 표시됩니다.
NoMethodError at /account_activations/0hbg0T33tjQlleiwKqvUDg/edit
undefined method `each' for #<Category:0x00000004f95b60>
이 과정에서 '각'이 어디에 호출 될지 알 수 없습니다.
갤러리 및 카테고리 생성과 사용자 활성화에 대해 언급했지만 위 코드는 카테고리 만 처리합니다. 제가 일할 카테고리를 얻을 수 있다면 비슷한 솔루션을 사용하여 갤러리를 작동시킬 수 있어야합니다. 이것은 어떤 조치를 생성의 나하는 카테고리처럼 보이는 것입니다 :
def new
@category = current_user.categories.build
end
def create
@category = current_user.categories.create(category_params)
if @category.save!
respond_to do |format|
format.html
format.js
end
end
end
내 문제와 관련된 몇 가지 질문이 있습니다
첫 번째 이유는 nomethod 오류가 점점 오전의 가장 명백하다 카테고리와 관련된 '각'메소드가없는 것 같습니까?
이 문제에 올바르게 접근하고 있습니까? 코드의 다른 곳에서 기본 카테고리 및 갤러리를 생성해야합니까? 내가 에 관한 약간의 글을 읽었는데, 사용자의
activated
컬럼에서 사용하려고 시도했지만, 어떻게 사용하는지 알 수는 없다.
제공 할 수있는 도움이 있으면 크게 감사드립니다.