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