我需要在调查对象中添加一个十六进制值,然后将其保存到数据库中,但我不能这样做,名称:它保持良好。但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
谢谢!
答案 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)