rails 4使用没有控制器的强参数

Pap*_*nho 5 ruby-on-rails ruby-on-rails-4

Rails 4:我来自rails 3.2.x我有一个问题.如何在没有控制器的情况下使用Strong参数.

我有这个型号:

Track (the only one that has a Controller  )
  has_many :tracksegments, :dependent => :destroy
  has_many :points, :through => :tracksegments
Tracksegment
  belongs_to :track
  has_many :points, :dependent => :destroy
points
  belongs_to :tracksegment
Run Code Online (Sandbox Code Playgroud)

Track是唯一一个拥有Controller的轨道,因此它具有一些强参数.

我想知道在哪里可以放置属于"tracksegment"和"points"的参数在Rails 3.x中它直接在模型中但在rails 4中我没有控制器.

小智 8

如果您需要在控制器之外使用"强参数",这可能会有所帮助:

在控制器之外使用

虽然强参数将在应用程序控制器中强制执行允许值和必需值,但请记住,在控制器外部使用时,您需要清理用于批量分配的不可信数据.

例如,如果从第三方API调用中检索JSON数据并将未经检查的解析结果传递给Model.create,则可能会发生不需要的批量分配.您可以通过切片哈希数据,或将数据包装在ActionController :: Parameters的新实例中并将声明权限与控制器中的权限相同来缓解此风险.例如:

raw_parameters = { :email => "john@example.com", :name => "John", :admin => true }
parameters = ActionController::Parameters.new(raw_parameters)
user = User.create(parameters.permit(:name, :email))
Run Code Online (Sandbox Code Playgroud)

https://github.com/rails/strong_parameters


too*_*olz 3

您允许参数进入您通过其发送的任何控制器。听起来您正在通过轨道控制器发送它们,如果是这样,您会将它们添加到那里。

请参阅有关如何允许嵌套参数的问题Rails 4 - 强参数 - 嵌套对象