2016-06-09 3 views
0

초대장을받은 사용자 만 가입 할 수있는 초대 시스템을 만들려고합니다. 가입 한 사용자는 친구를위한 초대 코드를 생성 할 수 있습니다. 각 초대는 사용자에게 속해야합니다. 여기 초대 시스템이 작동하지 않는 이유는 무엇입니까?

는 컨트롤러 :

class InvitesController < ApplicationController 
def new 
    @invite = current_user.invites.new 
end 
def create 
    @user = current_user 
    @invite = @user.invites.create 
    @invite.code = rand(1000..9000) 
    end 
end  

사용자 모델 : 경로에서

<% if user_signed_in? %> 
<%= form_for @invite, remote: true do |f| %> 
<%= f.hidden_field :user_id, :value => current_user.id %> 
    <%= f.submit 'post', class: '', name: 'post' %> 
<% end %> 
<% end %> 

:

resources :invites 
resources :users do 
resources :invites 
end 
01 색인

has_many :invites 

23,516,여기

내가지고있어 오류입니다 :

NameError: undefined local variable or method `add_user_id_to_invites' for main:Object 
    from (irb):6 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:110:in `start' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in `start' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:68:in `console' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' 
    from /home/ubuntu/workspace/bin/rails:9:in `<top (required)>' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/commands/rails.rb:6:in `call' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/command_wrapper.rb:38:in `call' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/application.rb:191:in `block in serve' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/application.rb:161:in `fork' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/application.rb:161:in `serve' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/application.rb:131:in `block in run' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/application.rb:125:in `loop' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/application.rb:125:in `run' 
    from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.0/lib/spring/application/boot.rb:19:in `<top (required)>' 
    from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from -e:1:in `<main>'2.3.0 :007 > 

rails generate migration add_user_id_to_invites 
+0

무엇입니까? 당신이 갖는 특이한 문제? 오류가 있습니까? 예기치 않은 행동이 보이십니까? 귀하의 질문에 대해 좀 더 자세하게 설명해 주시면 답변을 도와 드리겠습니다. 감사! –

+0

죄송합니다. 오류가 추가되었습니다. –

+0

걱정할 필요가 없습니다! 오류는'Invite' 모델에'user_id'에 대한 속성이나 데이터베이스 열이 없다는 것을 나타냅니다. 'db/schema.rb'는 무엇을 말합니까? 'invites' 테이블에 대한'user_id' 컬럼이 존재합니까? 이미이 마이그레이션을 만들었습니까? 아마도 당신은 그것을 실행하는 것을 잊었을 것입니다. –

답변

1

시도 :

class AddUserRefToInvites < ActiveRecord::Migration[5.0] 
    def change 
    add_reference :invites, :user, index: true, foreign_key: true 
    end 
end 
하십시오 USER_ID 컬럼 적절한 인덱스를 생성

rails g migration AddUserRefToInvites user:references 

+0

고맙습니다.하지만 문제는 해결되었지만 @ user.invites.all과 같은 초대장을 요청할 때 # 을 반환했습니다. 왜 그런지 알아? –

+0

콘솔에 설치 했습니까? 그렇다면 사용자 초대가없는 것 같습니다 ... 관계가 비어 있기 때문에 레일스는 객체 유형을 돌려줍니다. – Alex

+0

콘솔을 체크인했는데 초대장을 만들었습니다. –

관련 문제