如果继承了 rails 控制器,则覆盖 permited_params
Overwrite permited_params if rails controller has been inherited
举个例子:
class Base<ApplicationController
private
def permited_params
params.require(:object_name).permit(:name, :description)
end
end
class Post<Base
private
def permited_params
params.require(:post).permit(:name, :description, :owner)
end
end
我在创建呼叫操作时遇到错误 ActiveModel::ForbiddenAttributesError。我如何覆盖这个 permited_params
参数,一般来说,有一个很好的存在理由,并确保不是所有的东西都可以保存到你的数据库中。但是,如果您想允许所有参数,您可以调用
params.require(:post).permit!
如果您只想更改参数,您可以更改属性名称。
params.require(:post).permit(:name, :description, :some_you_want, some_more ) etc.
一般来说,您应该将所有要保存的参数添加到允许的参数列表中。因此,您要确保所有要保存的属性都将被存储,不会再有。您可以在每个控制器中设置 permitted_params
。您不需要将其称为允许的参数。例如,您可以在 posts_controller 中这样调用它:
def create
@post = Post.new(post_params)
#.... your code
end
private
def post_params
params.require(:post).permit(:name, :description, :owner)
end
这也适用于继承的控制器。
而不是params.require(:post).permit(...
你可以使用任何你想要的参数,比如 params.require(:reply).permit(...
如果所需的参数不可用,则会抛出错误。所以你需要确保它存在,例如
@post = Post.new
其他参数可选,默认不会报错。
举个例子:
class Base<ApplicationController
private
def permited_params
params.require(:object_name).permit(:name, :description)
end
end
class Post<Base
private
def permited_params
params.require(:post).permit(:name, :description, :owner)
end
end
我在创建呼叫操作时遇到错误 ActiveModel::ForbiddenAttributesError。我如何覆盖这个 permited_params
参数,一般来说,有一个很好的存在理由,并确保不是所有的东西都可以保存到你的数据库中。但是,如果您想允许所有参数,您可以调用
params.require(:post).permit!
如果您只想更改参数,您可以更改属性名称。
params.require(:post).permit(:name, :description, :some_you_want, some_more ) etc.
一般来说,您应该将所有要保存的参数添加到允许的参数列表中。因此,您要确保所有要保存的属性都将被存储,不会再有。您可以在每个控制器中设置 permitted_params
。您不需要将其称为允许的参数。例如,您可以在 posts_controller 中这样调用它:
def create
@post = Post.new(post_params)
#.... your code
end
private
def post_params
params.require(:post).permit(:name, :description, :owner)
end
这也适用于继承的控制器。
而不是params.require(:post).permit(...
你可以使用任何你想要的参数,比如 params.require(:reply).permit(...
如果所需的参数不可用,则会抛出错误。所以你需要确保它存在,例如
@post = Post.new
其他参数可选,默认不会报错。