Does passing the params collection to a model break mvc?

I want to pass the params collection from the controller to the model to
parse filtering and sorting conditions. Does having a method in the
that takes the params from the controller break MVC?

Not necessarily. The params object is just a hash. There is no reason
why you can’t or shouldnt pass a configuration hash to a method. I do
something similar quite often. One instance I find myself working with
is XML API’s that I must generate. Many options are available on the
query string. To handle this I use a pattern similar to the example

@models = Model.collection_for_api(params[:model])
render :xml => @models

def self.collection_for_api(opts = {})

assemble a bunch of named scopes based on opts


You’re passing unnecessary knowledge to your model.
It definitely doesn’t need to know the controller and/or the action
it’s being called from. And this information is by default in the
params hash of any given controller action.
Thus, it’s considered a bad practice - bad design. Your objects should
assume as little as possible about any other structure on your

Leonardo Borges

If you notice I only pass a section of the params has designed
specifically to build the appropriate query, not the entire hash.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs