0

私はこれらの関係を持っています:

class Applicant < ActiveRecord::Base
  has_many :answers
  accepts_nested_attributes_for :answers
end

class Answer < ActiveRecord::Base
  belongs_to :applicant
end

回答モデルには、プロパティと呼ばれる hstore 属性があります。プロパティ ハッシュは、ユーザーによってアプリ内で作成されるため、動的キーを持ちます。

申請者のコントローラー内でこれらの動的キーを正常にホワイトリストに登録できないようです。

これは私の現在の(失敗した)試みです。

def applicant_params
  params.require(:applicant).permit(:answers_attributes: [:question_id, :id]).tap do |whitelisted|
        whitelisted[:answers_attributes][:properties] = params[:applicant][:answers_attributes][:properties]
    end
end

助けてくれてありがとう。

4

1 に答える 1

3

アップデート。次のアプローチを使用してみてください(別のファイルでテスト済み):

@params = ActionController::Parameters.new(
  applicant: {answers_attributes: { 
                "0" => {question_id: 10, id:  110, properties: {a: "b", c: "d"}}, 
                "1" => {question_id: 20, id:  120, properties: {m: "n", o: "p"}}
}})

def applicant_params
  #properties should be [:a, :c, :m, :o]
  properties = []
  @params[:applicant][:answers_attributes].values.each do |answer|
    properties |= answer[:properties].keys
  end
  @params.require(:applicant).permit(answers_attributes: 
                                       [:question_id, :id, properties: properties])
end

BTL。hstores の操作に関するかなり良い記事があります。また、Rails 4 での hstore の使用に関するいくつかの一般的な事項。

于 2013-10-28T19:35:14.713 に答える