ece517-p3/expertiza

View on GitHub
app/models/folder_node.rb

Summary

Maintainability
A
1 hr
Test Coverage

Mass assignment is not restricted using attr_accessible
Open

class FolderNode < Node
Severity: Critical
Found in app/models/folder_node.rb by brakeman

This warning comes up if a model does not limit what attributes can be set through mass assignment.

In particular, this check looks for attr_accessible inside model definitions. If it is not found, this warning will be issued.

Brakeman also warns on use of attr_protected - especially since it was found to be vulnerable to bypass. Warnings for mass assignment on models using attr_protected will be reported, but at a lower confidence level.

Note that disabling mass assignment globally will suppress these warnings.

Method get_children has 6 arguments (exceeds 4 allowed). Consider refactoring.
Open

  def get_children(sortvar = nil, sortorder = nil, user_id = nil, show = nil, parent_id = nil, search = nil)
Severity: Minor
Found in app/models/folder_node.rb - About 45 mins to fix

    Method get has 6 arguments (exceeds 4 allowed). Consider refactoring.
    Open

      def self.get(_sortvar = nil, _sortorder = nil, _user_id = nil, _show = nil, _parent_id = nil, _search = nil)
    Severity: Minor
    Found in app/models/folder_node.rb - About 45 mins to fix

      Specify an :inverse_of option.
      Open

        belongs_to :node_object, class_name: "TreeFolder"
      Severity: Minor
      Found in app/models/folder_node.rb by rubocop

      This cop looks for has(one|many) and belongsto associations where ActiveRecord can't automatically determine the inverse association because of a scope or the options used. This can result in unnecessary queries in some circumstances. :inverse_of must be manually specified for associations to work in both ways, or set to false to opt-out.

      Example:

      # good
      class Blog < ApplicationRecord
        has_many :posts
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end

      Example:

      # bad
      class Blog < ApplicationRecord
        has_many :posts, -> { order(published_at: :desc) }
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end
      
      # good
      class Blog < ApplicationRecord
        has_many(:posts,
          -> { order(published_at: :desc) },
          inverse_of: :blog
        )
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end
      
      # good
      class Blog < ApplicationRecord
        with_options inverse_of: :blog do
          has_many :posts, -> { order(published_at: :desc) }
        end
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end

      Example:

      # bad
      class Picture < ApplicationRecord
        belongs_to :imageable, polymorphic: true
      end
      
      class Employee < ApplicationRecord
        has_many :pictures, as: :imageable
      end
      
      class Product < ApplicationRecord
        has_many :pictures, as: :imageable
      end
      
      # good
      class Picture < ApplicationRecord
        belongs_to :imageable, polymorphic: true
      end
      
      class Employee < ApplicationRecord
        has_many :pictures, as: :imageable, inverse_of: :imageable
      end
      
      class Product < ApplicationRecord
        has_many :pictures, as: :imageable, inverse_of: :imageable
      end

      Example:

      # bad
      # However, RuboCop can not detect this pattern...
      class Physician < ApplicationRecord
        has_many :appointments
        has_many :patients, through: :appointments
      end
      
      class Appointment < ApplicationRecord
        belongs_to :physician
        belongs_to :patient
      end
      
      class Patient < ApplicationRecord
        has_many :appointments
        has_many :physicians, through: :appointments
      end
      
      # good
      class Physician < ApplicationRecord
        has_many :appointments
        has_many :patients, through: :appointments
      end
      
      class Appointment < ApplicationRecord
        belongs_to :physician, inverse_of: :appointments
        belongs_to :patient, inverse_of: :appointments
      end
      
      class Patient < ApplicationRecord
        has_many :appointments
        has_many :physicians, through: :appointments
      end

      @see http://guides.rubyonrails.org/association_basics.html#bi-directional-associations @see http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#module-ActiveRecord::Associations::ClassMethods-label-Setting+Inverses

      Specify an :inverse_of option.
      Open

        belongs_to :folder, class_name: "TreeFolder", foreign_key: "node_object_id"
      Severity: Minor
      Found in app/models/folder_node.rb by rubocop

      This cop looks for has(one|many) and belongsto associations where ActiveRecord can't automatically determine the inverse association because of a scope or the options used. This can result in unnecessary queries in some circumstances. :inverse_of must be manually specified for associations to work in both ways, or set to false to opt-out.

      Example:

      # good
      class Blog < ApplicationRecord
        has_many :posts
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end

      Example:

      # bad
      class Blog < ApplicationRecord
        has_many :posts, -> { order(published_at: :desc) }
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end
      
      # good
      class Blog < ApplicationRecord
        has_many(:posts,
          -> { order(published_at: :desc) },
          inverse_of: :blog
        )
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end
      
      # good
      class Blog < ApplicationRecord
        with_options inverse_of: :blog do
          has_many :posts, -> { order(published_at: :desc) }
        end
      end
      
      class Post < ApplicationRecord
        belongs_to :blog
      end

      Example:

      # bad
      class Picture < ApplicationRecord
        belongs_to :imageable, polymorphic: true
      end
      
      class Employee < ApplicationRecord
        has_many :pictures, as: :imageable
      end
      
      class Product < ApplicationRecord
        has_many :pictures, as: :imageable
      end
      
      # good
      class Picture < ApplicationRecord
        belongs_to :imageable, polymorphic: true
      end
      
      class Employee < ApplicationRecord
        has_many :pictures, as: :imageable, inverse_of: :imageable
      end
      
      class Product < ApplicationRecord
        has_many :pictures, as: :imageable, inverse_of: :imageable
      end

      Example:

      # bad
      # However, RuboCop can not detect this pattern...
      class Physician < ApplicationRecord
        has_many :appointments
        has_many :patients, through: :appointments
      end
      
      class Appointment < ApplicationRecord
        belongs_to :physician
        belongs_to :patient
      end
      
      class Patient < ApplicationRecord
        has_many :appointments
        has_many :physicians, through: :appointments
      end
      
      # good
      class Physician < ApplicationRecord
        has_many :appointments
        has_many :patients, through: :appointments
      end
      
      class Appointment < ApplicationRecord
        belongs_to :physician, inverse_of: :appointments
        belongs_to :patient, inverse_of: :appointments
      end
      
      class Patient < ApplicationRecord
        has_many :appointments
        has_many :physicians, through: :appointments
      end

      @see http://guides.rubyonrails.org/association_basics.html#bi-directional-associations @see http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#module-ActiveRecord::Associations::ClassMethods-label-Setting+Inverses

      Do not prefix reader method names with get_.
      Open

        def get_name
      Severity: Minor
      Found in app/models/folder_node.rb by rubocop

      This cop makes sure that accessor methods are named properly.

      Example:

      # bad
      def set_attribute(value)
      end
      
      # good
      def attribute=(value)
      end
      
      # bad
      def get_attribute
      end
      
      # good
      def attribute
      end

      Do not prefix reader method names with get_.
      Open

        def get_child_type
      Severity: Minor
      Found in app/models/folder_node.rb by rubocop

      This cop makes sure that accessor methods are named properly.

      Example:

      # bad
      def set_attribute(value)
      end
      
      # good
      def attribute=(value)
      end
      
      # bad
      def get_attribute
      end
      
      # good
      def attribute
      end

      Do not prefix reader method names with get_.
      Open

        def get_partial_name
      Severity: Minor
      Found in app/models/folder_node.rb by rubocop

      This cop makes sure that accessor methods are named properly.

      Example:

      # bad
      def set_attribute(value)
      end
      
      # good
      def attribute=(value)
      end
      
      # bad
      def get_attribute
      end
      
      # good
      def attribute
      end

      There are no issues that match your filters.

      Category
      Status