当我将 attr_accessible 添加到我的关系模型时发生这种情况。
class Relationship < ActiveRecord::Base
attr_accessible :followed_id
end
如果不使用 Devise 或 protected_attributes gem,有什么方法可以解决这个问题?我知道在控制器中你调用一个私有方法需要和允许字段。这也是你应该在模型中做的事情吗?这里的约定是什么?
谢谢!
当我将 attr_accessible 添加到我的关系模型时发生这种情况。
class Relationship < ActiveRecord::Base
attr_accessible :followed_id
end
如果不使用 Devise 或 protected_attributes gem,有什么方法可以解决这个问题?我知道在控制器中你调用一个私有方法需要和允许字段。这也是你应该在模型中做的事情吗?这里的约定是什么?
谢谢!
在 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