我有三种模式,服务器有很多维护,维护属于服务器和用户。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
我越来越
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