ruby-on-rails - 请为 params(strong_parameters) 使用新的推荐保护模型或将 `protected_attributes` 添加到您的 gemfile

标签 ruby-on-rails devise mass-assignment whitelist attr-accessible

当我将 attr_accessible 添加到我的关系模型时发生这种情况。

class Relationship < ActiveRecord::Base
  attr_accessible :followed_id
end

如果不使用 Devise 或 protected_attributes gem,有什么方法可以解决这个问题?我知道在 Controller 中你调用一个私有(private)方法需要和允许字段。这也是你应该在模型中做的事情吗?这里的约定是什么?

谢谢!

最佳答案

在 Rails 4 中,您使用强参数而不是 protected 属性。 (您不需要在 gemfile 中包含 gem,因为它已经包含在内。)

您将 Rails 3 attr_accessible 代码从模型中取出,并将相应的代码放入 Controller 中。有关更多文档,请参见此处:https://github.com/rails/strong_parameters

在您的情况下,类似于:

class RelationshipController < ActionController::Base
  def create
    @relationship = Relationship.new(relationship_params)

    if @relationship.save
        # do something
    else
        # do something
    end
  end

  private
    def relationship_params
      params.require(:relationship).permit(:followed_id)
    end
end

编辑:

这是我刚刚看到的一篇很好的文章:http://blog.sensible.io/2013/08/17/strong-parameters-by-example.html

关于ruby-on-rails - 请为 params(strong_parameters) 使用新的推荐保护模型或将 `protected_attributes` 添加到您的 gemfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130184/

相关文章:

iphone - iOS应用程序i18n,使用类似Rails的按键样式?

ruby-on-rails - Rails- Controller :notice - Add a variable?

ruby-on-rails - 哈希 to_json 和返回不保留哈希作为键?

Scala 错误或功能?大写字母变量的多重赋值错误

mysql - 通过大量 SQL 调用来加速缓慢的函数

ruby-on-rails - 带有设计的购物车 - session_id 在登录后发生变化

ruby-on-rails - 根据登录时的用户角色设计重定向到特定页面

ruby-on-rails - 使用 json 发送 post 请求来设计注册

ruby-on-rails - 在 Rails 中使用 accepts_nested_attributes_for + 批量赋值保护

laravel - 在 Laravel 中存储外键值