現在のユーザーが別のユーザーを招待し、その新しい招待者をリストに割り当てることを許可しようとしていますが、招待されたユーザーがサインアップしようとするとエラーが発生します。
各モデルの has_and_belongs_to_many に関連付けられている User と Listing の 2 つのモデルがあります。トークンと、招待者を割り当てる必要があるリストを含む招待モデルもあります。
デバイス登録コントローラーをオーバーライドしています:
def new
resource = build_resource({:invitation_token => params[:invitation_token]})
resource.email = resource.invitation.recipient_email if resource.invitation
resource.listings << resource.invitation.listing if resource.invitation
respond_with resource
end
# POST /resource
def create
build_resource
if resource.save
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
expire_session_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
end
そして、私の登録/新しいビューには次のものがあります:
= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
= f.hidden_field :listing_ids
新しいユーザーを招待してサインアップ (登録/新規) ページに移動し、フォームに入力して [送信] をクリックすると、次のエラーが表示されます。
Couldn't find Listing with id=0
そして、サーバーログへの次の出力:
Started POST "/users" for 127.0.0.1 at 2012-04-26 14:02:51 -0400
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"KdWS08JnnbN61JwKkUsIBNDFvJZnX6E8iN3QOS9149U=", "user"=>{"invitation_token"=>"80c98940448829e7edc623f9886e6930434e245c", "listing_ids"=>"[1]", "first_name"=>"John", "last_name"=>"Williams", "email"=>"johnpkelleher@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
Invitation Load (0.8ms) SELECT "invitations".* FROM "invitations" WHERE "invitations"."token" = '80c98940448829e7edc623f9886e6930434e245c' LIMIT 1
Listing Load (0.3ms) SELECT "listings".* FROM "listings" WHERE "listings"."id" = $1 LIMIT 1 [["id", 0]]
Completed 404 Not Found in 170ms
ActiveRecord::RecordNotFound (Couldn't find Listing with id=0):
app/controllers/registrations_controller.rb:12:in `create'
割り当てられたリスティングの ID が 1 のときにこのエラーが発生するのはなぜですか。