i'm trying server-side validation form in rails, , require specific fields have value. here params in controller:
private def post_params params.require(:post).permit(:title, :text, :slug) end the problem server merely permits these params — doesn't require them, it's possible submit blank form.
my understanding params.require accepts 1 argument, , i've tried getting around no success:
private def post_params params.require(:post, :title, :text, :slug) end # => wrong number of arguments (4 1) private def post_params all_params = [:post, :title, :text, :slug] params.require(all_params) end # => param missing or value empty: [:post, :title, :text, :slug] private def post_params params.require(:post).require(:title).require(:text).require(:slug) end # => private method `require' called "test thing":string is there way require multiple strong params?
strong parameters used mass assignment. mass assignment means when submit form multiple values submitted i.e., multiple attributes of model add them in params.require(:post).permit. seeing word permit means attributes permitted mass assigned. suppose writing in controller:
def post_params params.require(:post).permit(:title, :text, :slug) end and in params suppose have:
{"post"=>{"title"=>'test',"text"=>"text test","slug"=>"any random name","type"=>"article"}} now if do:
@post = post.new(post_params) @post.save it give unpermitted parameters :type because have not whitelisted type parameter. given security reasons allow attributes needs updated user view permitted. , strong parameters introduced rails 4 onwards.
now thing need require these parameters user fills them needs done in model this:
class post < activerecord::base validates_presence_of :title, :text, :slug end this validation make users enter title, text , slug necessarily. there more type of validations , custom validations can written according needs.
more info:
hope helps
Comments
Post a Comment