5

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

class Relationship < ActiveRecord::Base
  attr_accessible :followed_id
end

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

谢谢!

4

1 回答 1

9

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

您将 Rails 3 attr_accessible 代码从模型中取出,并将相应的代码放入控制器中。有关更多文档,请参见此处: 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

于 2013-10-02T04:57:47.993 回答