我正在创建一个调查应用程序,我在rails服务器上创建调查,只要用户下次打开我的Android应用程序时没有参加调查,他们就会将调查结果显示给采取。一旦用户参与调查,我想更新调查以包含该用户,以便他们每次登录时都不再发送相同的调查。我在用户/调查之间使用HABTM关系。
我能够得到调查/让用户接受它/在服务器上创建用户选择但我正在努力与仅进行调查的用户更新调查。我很确定我的问题是我的PUT请求(auth_token用于识别用户)。
Started PUT "/api/v1/surveys/4?auth_token=8d707d9fa2b279f381eb416f1be887c0"
这是我的控制器:
module Api
module V1
class SurveysController < ApplicationController
# before_action :restrict_access
respond_to :json
def survey
@survey = Survey.check_survey params[:auth_token]
redirect_to api_v1_survey_path(@survey)
end
def update
@survey = Survey.find(params[:id])
@user = User.find_user_by_token params[:auth_token]
complete_survey @survey, @user
end
我的模特:
class Survey < ActiveRecord::Base
has_many :surveytizations
has_many :questions, :through => :surveytizations
has_and_belongs_to_many :users, -> { uniq }
def complete_survey (survey, user)
survey.users << user
survey.number_taken += 1
if survey.number_taken == survey.survey_limit
survey.survey_finished = true
end
end
在使用curl to test Rails routes时,它将介绍如何更新用户的属性。我很陌生 - 如果我想用额外的用户测试更新用户数组,我该怎么做?我试过survey[users]=user1
,但这似乎不起作用。
提前感谢您的帮助!