Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails如何解释参数散列、严格参数_Ruby On Rails_Ruby On Rails 4_Params_Strong Parameters - Fatal编程技术网

Ruby on rails rails如何解释参数散列、严格参数

Ruby on rails rails如何解释参数散列、严格参数,ruby-on-rails,ruby-on-rails-4,params,strong-parameters,Ruby On Rails,Ruby On Rails 4,Params,Strong Parameters,起初,当我创建帖子时,用户id是零。最初,我的帖子参数只是:content&:category。直到我添加了:user_id,我才最终能够让post.user.first_name正常工作。(first_name是一个用户列)我经常使用它,在我创建帖子时,id会显示出来,但在刷新页面时,id会消失(我在提交后使用ajax显示帖子)。参数仍然不包括:user_id,但是现在创建帖子并将其放入数据库时,user_id就在那里。我没有明确说明用户id是什么,那么它是如何知道的呢?从认证前开始!从设计中

起初,当我创建帖子时,用户id是零。最初,我的帖子参数只是:content&:category。直到我添加了:user_id,我才最终能够让post.user.first_name正常工作。(first_name是一个用户列)我经常使用它,在我创建帖子时,id会显示出来,但在刷新页面时,id会消失(我在提交后使用ajax显示帖子)。参数仍然不包括:user_id,但是现在创建帖子并将其放入数据库时,user_id就在那里。我没有明确说明用户id是什么,那么它是如何知道的呢?从认证前开始!从设计中过滤?或者它是否从当前_user.posts.create获取id

原来有

def  create  
@post=post.create({content: post_params[:content], category:   post_params[:category].downcase})
end
然后

def create
@post = current_user.posts.create({content: post_params[:content], category:   post_params[:category].downcase})
end

private

def post_params
params.require(:post).permit(:content, :category, :user_id)
end


User Load (0.2ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 6  ORDER BY  "users"."id" ASC LIMIT 1
 (0.1ms)  begin transaction
SQL (0.3ms)  INSERT INTO "posts" ("category", "content", "created_at", "updated_at",   "user_id") VALUES (?, ?, ?, ?, ?)  [["category", "announcements"], ["content", "Hi All!"],  ["created_at", "2014-10-13 19:58:02.937604"], ["updated_at", "2014-10-13 19:58:02.937604"],  ["user_id", 6]]
(3.8ms)  commit transaction
Like Exists (0.2ms)  SELECT  1 AS one FROM "likes"  WHERE "likes"."user_id" = 6 AND   "likes"."post_id" = 69 LIMIT 1

调用create或build-on-a-relationship(本例中为用户帖子)时,Rails会自动实例化good-relationship字段,将对象链接到父对象。

您需要稍微研究一下
post_params
是一组允许的参数,因此使用<代码>当前用户.posts.create(post参数)。。。这将把提交给DB引擎的参数限制为
def post_params
中定义的参数和单独的参数。。。