私は3つのモデルを持っています。サーバは多くのメンテナンスを持ち、メンテナンスはサーバとユーザに属します。コンソールでRailsの強力なパラメータ - 外部キーパラメータを使用してアクションを作成
create_table :maintenances do |t|
t.references :server, foreign_key: true
t.references :user, foreign_key: true
t.string :name
t.text :content
end
次のように私はレコードを作成することができます
Server.create(:hostname => "Sissy", :description => "Webserver")
Maintenance.create(:server_id => 1, :user_id => 1, :name => "Test", :content => "Test")
を、私の質問は:私は私のコントローラでこれを行うことができますどのようにアクションを作成しますか? 問題:user_id
は、メンテナンスのparamsハッシュの一部ではないということですので、私は
def create
@server = Server.find(params[:id])
@maintenance = @server.maintenances.create!(maintenance_params)
end
private
def maintenance_params
params.require(:maintenance).permit(:user_id => current_user.id,
:id,
:name,
:content)
end
を書く場合、私ははい、あなたはstrong_params方法でそのような何かを行うことはできません
Syntax error, unexpected ',', expecting =>
...ser_id => current_user.id, :id, :name, :content, :start, :pl...
... ^):
app/controllers/maintenances_controller.rb:41: syntax error, unexpected ',', expecting =>
構文エラーは、rubyのメソッド呼び出しで序数引数の前にハッシュキーを持つことができないためです。 'permit(:id、:name、:content、:user_id => current_user.id)'は構文的に有効ですが、代わりにブロックを使用してセッションから値を入力パラメータにマージするのではなく、 – max