スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【ActiveAdmin】formで、belongs_toなmodelのstrong_parameterを指定する

【ActiveAdmin】formで、belongs_toなmodelのstrong_parameterを指定する




今すぐ登録したい方へ


このブログから登録の多いエージェントは下記の3つです★

(リンクをクリックすると公式サイトに飛びます)

【ダントツの1位】フォスターフリーランス【案件保有数5000件以上。業界20年の超老舗】

【僅差で2位】エミリーエンジニア【4人に1人が初めてのフリーランス】

【惜しくも3位】Midworks(ミッドワークス) 【リモート案件が超豊富。正社員並みの保障アリ】




こんにちは、mah(@RailsRubyMah6h)です。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


  • 【ActiveAdmin】formで、belongs_toなmodelのstrong_parameterを指定する


について書いていきます。




【ActiveAdmin】formで、belongs_toなmodelのstrong_parameterを指定する





結論


特に難しいことを考える必要はなく、

permit_paramsに、

親モデルの「名称」と「属性」を指定すればOKです。




例えば、

下記のようなモデルがあるとします。


# 親
class Plan
  attribute :name
  attribute :price
  has_many :contracts
end

# 子
class Contract
  belongs_to :plan
end




この場合、

ActiveAdmin側で下記のようにすればOKです。


# app/admin/contract.rb
ActiveAdmin.register Contract do

  # これを追加
  permit_params plan: [:name, :price]

  # コントローラー的な処理をしたい場合に追加
  controller do
  end
end




ここで注意点。


permit_paramsには、

親モデル名だけではなく、

親モデルの属性まで書いてあげる必要があります。


# OK
permit_params plan: [:name, :price]

# NG
permit_params :plan




自分は最初、

permit_params :plan

と書いていたところ、


unpermitted_parameter :plan


的なメッセージで、

:planだけが拒否されていたので混乱しました...




よくよく考えると当たり前かと思ったのですが、

何故だかしばらくハマってしまいました...




ドキュメントには、

has_manyな子モデルに対する情報は載っていますが、

belongs_toな親モデルに対する記述はありません。


activeadmin.info




また、

permit_paramsを定義すると、

controller do〜endブロックの中で、

permitted_paramsというメソッドが使えるようになります。


permitted_paramsは、

通常のストロングパラメータと同じように、

permitted_params[:plan][:name] みたいにして使うことができます。




最後に


下記の表に、

フリーランスエンジニア向けの人気エージェントをまとめてみました。


エージェント選びで悩んでいる方は是非参考にしてみてくださいね★





あわせて読みたい


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech




最後までお読み頂きありがとうございました★

もしよかったらTwiiterのフォローもお願いします★