Rails 4 - 强参数 - 白色标记外键

时间:2015-11-14 22:03:19

标签: ruby-on-rails foreign-keys strong-parameters

我有一个rails 4 app。

在控制器中创建允许的参数时,如果与另一个模型存在belongs_to关联,是否需要在允许的参数中包含外键,以便在保存记录时更新它,或者是自动的?

2 个答案:

答案 0 :(得分:0)

自动。

在Rails 4中,您必须允许该属性才能批量分配其值。另一个模型的外键是您尝试更新的当前模型的属性。在不允许的情况下,您无法更新它的价值。

答案 1 :(得分:0)

外键不是自动的,the associated object is

enter image description here

这意味着以下情况属实:

#app/controllers/your_controller.rb
class YourController < ApplicationController
   def create
      @item = Item.new new_params
      @associated = Associated.find x

      @item.associated = @associated #-> this always works & will save 
      @item.save
   end

   private

   def new_params
      params.require(:item).permit(:name, :etc) #-> foreign_key would have to be explicitly defined here if associated_id was passed from a form
   end
end

这可以让您了解如何使用对象。

<强>更新

如果您想每次为当前用户分配帖子,您可以使用以下内容:

#app/controllers/posts_controller.rb
class PostsController < ApplicationController
   def create
      @post = Post.new post_params
      @post.user = current_user # -> however you identify the user
      @post.save
   end
end