使用强参数创建具有十六进制参数的对象

时间:2015-01-24 22:07:20

标签: ruby-on-rails

我需要在调查对象中添加一个十六进制值,然后将其保存到数据库中,但我不能这样做,名称:它保持良好。但suid:从未到达数据库,并且不会在服务器日志中显示为未经许可的值。

class SurveysController < ApplicationController

def new
    @survey = Survey.new
    @adjectives = Adjective.all
end

def create
    @survey = Survey.new(survey_params, suid: Survey.new_suid)
    @survey.save  
end

private

    def survey_params
        params.require(:survey).permit(:name, :suid)
    end 
end

这里的模型:

class Survey < ActiveRecord::Base
has_many :surveys
has_and_belongs_to_many :adjectives
belongs_to :nruser

def Survey.new_suid
    SecureRandom.hex(n=16)       
end 
end

谢谢!

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是:

def create
    @survey = Survey.new(survey_params)
    @survey.suid = Survey.new_suid
    @survey.save  
end

另一种方法是将suid添加到params,但我认为这更容易。要添加到params

params[:survey].merge(suid: Survey.new_suid)