Mass assignment is not restricted using attr_accessible Open
class Questionnaire < ActiveRecord::Base
- Read upRead up
- Exclude checks
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.
Assignment Branch Condition size for validate_questionnaire is too high. [16.31/15] Open
def validate_questionnaire
errors.add(:max_question_score, "The maximum question score must be a positive integer.") if max_question_score < 1
errors.add(:min_question_score, "The minimum question score must be less than the maximum") if min_question_score >= max_question_score
results = Questionnaire.where("id <> ? and name = ? and instructor_id = ?", id, name, instructor_id)
- Read upRead up
- Exclude checks
This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric
Specify an :inverse_of
option. Open
has_one :questionnaire_node, foreign_key: 'node_object_id', dependent: :destroy
- Read upRead up
- Exclude checks
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
Trailing whitespace detected. Open
'Teammate ReviewQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'AssignmentSurveyQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'CourseSurveyQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'Author FeedbackQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'AuthorFeedbackQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'GlobalSurveyQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'BookmarkratingQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'Course SurveyQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'Global SurveyQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'Assignment SurveyQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
QUESTIONNAIRE_TYPES = ['ReviewQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'MetareviewQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'TeammateReviewQuestionnaire',
- Exclude checks
Trailing whitespace detected. Open
'SurveyQuestionnaire',
- Exclude checks