Patch by Minoru Maeda (@maeda-m). git-svn-id: https://svn.redmine.org/redmine/trunk@22619 e93f8b46-1217-0410-a6f0-8f06a7374b81pull/145/merge
@@ -129,6 +129,10 @@ Rails/ActiveSupportOnLoad: | |||
# TODO: Need to check the impact on plugins. Disable for now. | |||
- 'lib/redmine/preparation.rb' | |||
Rails/ApplicationRecord: | |||
Exclude: | |||
- 'db/migrate/0*.rb' | |||
Rails/BulkChangeTable: | |||
Exclude: | |||
- 'db/migrate/20120714122200_add_workflows_rule_fields.rb' |
@@ -497,10 +497,6 @@ Rails/ApplicationMailer: | |||
- 'app/models/mail_handler.rb' | |||
- 'app/models/mailer.rb' | |||
# This cop supports unsafe autocorrection (--autocorrect-all). | |||
Rails/ApplicationRecord: | |||
Enabled: false | |||
# This cop supports safe autocorrection (--autocorrect). | |||
# Configuration parameters: Include. | |||
# Include: **/test/**/* |
@@ -209,7 +209,7 @@ class WatchersController < ApplicationController | |||
nil | |||
end | |||
return unless klass && Class === klass # rubocop:disable Style/CaseEquality | |||
return unless klass < ActiveRecord::Base | |||
return unless klass < ApplicationRecord | |||
return unless klass < Redmine::Acts::Watchable::InstanceMethods | |||
scope = klass.where(:id => Array.wrap(params[:object_id])) |
@@ -0,0 +1,32 @@ | |||
# frozen_string_literal: true | |||
# Redmine - project management software | |||
# Copyright (C) 2006-2023 Jean-Philippe Lang | |||
# | |||
# This program is free software; you can redistribute it and/or | |||
# modify it under the terms of the GNU General Public License | |||
# as published by the Free Software Foundation; either version 2 | |||
# of the License, or (at your option) any later version. | |||
# | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU General Public License for more details. | |||
# | |||
# You should have received a copy of the GNU General Public License | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class ApplicationRecord < ActiveRecord::Base | |||
self.abstract_class = true | |||
# Translate attribute names for validation errors display | |||
def self.human_attribute_name(attr, options = {}) | |||
prepared_attr = attr.to_s.sub(/_id$/, '').sub(/^.+\./, '') | |||
class_prefix = name.underscore.tr('/', '_') | |||
redmine_default = [ | |||
:"field_#{class_prefix}_#{prepared_attr}", | |||
:"field_#{prepared_attr}" | |||
] | |||
options[:default] = redmine_default + Array(options[:default]) | |||
super | |||
end | |||
end |
@@ -21,7 +21,7 @@ require "digest" | |||
require "fileutils" | |||
require "zip" | |||
class Attachment < ActiveRecord::Base | |||
class Attachment < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :container, :polymorphic => true | |||
belongs_to :author, :class_name => "User" |
@@ -22,7 +22,7 @@ | |||
class AuthSourceException < StandardError; end | |||
class AuthSourceTimeoutException < AuthSourceException; end | |||
class AuthSource < ActiveRecord::Base | |||
class AuthSource < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
include Redmine::SubclassFactory | |||
include Redmine::Ciphering |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Board < ActiveRecord::Base | |||
class Board < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :project | |||
has_many :messages, lambda {order("#{Message.table_name}.created_on DESC")}, :dependent => :destroy |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Change < ActiveRecord::Base | |||
class Change < ApplicationRecord | |||
belongs_to :changeset | |||
validates_presence_of :changeset_id, :action, :path |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Changeset < ActiveRecord::Base | |||
class Changeset < ApplicationRecord | |||
belongs_to :repository | |||
belongs_to :user | |||
has_many :filechanges, :class_name => 'Change', :dependent => :delete_all |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Comment < ActiveRecord::Base | |||
class Comment < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :commented, :polymorphic => true, :counter_cache => true | |||
belongs_to :author, :class_name => 'User' |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class CustomField < ActiveRecord::Base | |||
class CustomField < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
include Redmine::SubclassFactory | |||
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class CustomFieldEnumeration < ActiveRecord::Base | |||
class CustomFieldEnumeration < ApplicationRecord | |||
belongs_to :custom_field | |||
validates_presence_of :name, :position, :custom_field_id |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class CustomValue < ActiveRecord::Base | |||
class CustomValue < ApplicationRecord | |||
belongs_to :custom_field | |||
belongs_to :customized, :polymorphic => true | |||
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Document < ActiveRecord::Base | |||
class Document < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :project | |||
belongs_to :category, :class_name => "DocumentCategory" |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class EmailAddress < ActiveRecord::Base | |||
class EmailAddress < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :user |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class EnabledModule < ActiveRecord::Base | |||
class EnabledModule < ApplicationRecord | |||
belongs_to :project | |||
acts_as_watchable | |||
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Enumeration < ActiveRecord::Base | |||
class Enumeration < ApplicationRecord | |||
include Redmine::SubclassFactory | |||
default_scope lambda {order(:position)} |
@@ -19,7 +19,7 @@ | |||
require 'csv' | |||
class Import < ActiveRecord::Base | |||
class Import < ApplicationRecord | |||
has_many :items, :class_name => 'ImportItem', :dependent => :delete_all | |||
belongs_to :user | |||
serialize :settings |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class ImportItem < ActiveRecord::Base | |||
class ImportItem < ApplicationRecord | |||
belongs_to :import | |||
validates_presence_of :import_id, :position |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Issue < ActiveRecord::Base | |||
class Issue < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
include Redmine::Utils::DateCalculation | |||
include Redmine::I18n |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class IssueCategory < ActiveRecord::Base | |||
class IssueCategory < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :project | |||
belongs_to :assigned_to, :class_name => 'Principal' |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class IssueRelation < ActiveRecord::Base | |||
class IssueRelation < ApplicationRecord | |||
# Class used to represent the relations of an issue | |||
class Relations < Array | |||
include Redmine::I18n |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class IssueStatus < ActiveRecord::Base | |||
class IssueStatus < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
before_destroy :check_integrity |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Journal < ActiveRecord::Base | |||
class Journal < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :journalized, :polymorphic => true |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class JournalDetail < ActiveRecord::Base | |||
class JournalDetail < ApplicationRecord | |||
belongs_to :journal | |||
def custom_field |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Member < ActiveRecord::Base | |||
class Member < ApplicationRecord | |||
belongs_to :user | |||
belongs_to :principal, :foreign_key => 'user_id' | |||
has_many :member_roles, :dependent => :destroy |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class MemberRole < ActiveRecord::Base | |||
class MemberRole < ApplicationRecord | |||
belongs_to :member | |||
belongs_to :role | |||
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Message < ActiveRecord::Base | |||
class Message < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :board | |||
belongs_to :author, :class_name => 'User' |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class News < ActiveRecord::Base | |||
class News < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :project | |||
belongs_to :author, :class_name => 'User' |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Principal < ActiveRecord::Base | |||
class Principal < ApplicationRecord | |||
self.table_name = "#{table_name_prefix}users#{table_name_suffix}" | |||
# Account statuses |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Project < ActiveRecord::Base | |||
class Project < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
include Redmine::NestedSet::ProjectNestedSet | |||
@@ -239,7 +239,7 @@ class QueryFilter | |||
end | |||
end | |||
class Query < ActiveRecord::Base | |||
class Query < ApplicationRecord | |||
class StatementInvalid < ::ActiveRecord::StatementInvalid | |||
end | |||
@@ -19,7 +19,7 @@ | |||
class ScmFetchError < StandardError; end | |||
class Repository < ActiveRecord::Base | |||
class Repository < ApplicationRecord | |||
include Redmine::Ciphering | |||
include Redmine::SafeAttributes | |||
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Role < ActiveRecord::Base | |||
class Role < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
# Custom coder for the permissions attribute that should be an |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Setting < ActiveRecord::Base | |||
class Setting < ApplicationRecord | |||
PASSWORD_CHAR_CLASSES = { | |||
'uppercase' => /[A-Z]/, | |||
'lowercase' => /[a-z]/, |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class TimeEntry < ActiveRecord::Base | |||
class TimeEntry < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
# could have used polymorphic association | |||
# project association here allows easy loading of time entries at project level with one database trip |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Token < ActiveRecord::Base | |||
class Token < ApplicationRecord | |||
belongs_to :user | |||
validates_uniqueness_of :value, :case_sensitive => true | |||
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Tracker < ActiveRecord::Base | |||
class Tracker < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
CORE_FIELDS_UNDISABLABLE = %w(project_id tracker_id subject is_private).freeze |
@@ -19,7 +19,7 @@ | |||
require 'redmine/my_page' | |||
class UserPreference < ActiveRecord::Base | |||
class UserPreference < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :user |
@@ -108,7 +108,7 @@ module FixedIssuesExtension | |||
end | |||
end | |||
class Version < ActiveRecord::Base | |||
class Version < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
after_update :update_issues_from_sharing_change |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Watcher < ActiveRecord::Base | |||
class Watcher < ApplicationRecord | |||
belongs_to :watchable, :polymorphic => true | |||
belongs_to :user, :class_name => 'Principal' | |||
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class Wiki < ActiveRecord::Base | |||
class Wiki < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :project | |||
has_many :pages, lambda {order(Arel.sql('LOWER(title)').asc)}, :class_name => 'WikiPage', :dependent => :destroy |
@@ -19,7 +19,7 @@ | |||
require 'zlib' | |||
class WikiContent < ActiveRecord::Base | |||
class WikiContent < ApplicationRecord | |||
self.locking_column = 'version' | |||
belongs_to :page, :class_name => 'WikiPage' | |||
belongs_to :author, :class_name => 'User' |
@@ -19,7 +19,7 @@ | |||
require 'zlib' | |||
class WikiContentVersion < ActiveRecord::Base | |||
class WikiContentVersion < ApplicationRecord | |||
belongs_to :page, :class_name => 'WikiPage' | |||
belongs_to :author, :class_name => 'User' | |||
@@ -19,7 +19,7 @@ | |||
require 'redmine/string_array_diff/diff' | |||
class WikiPage < ActiveRecord::Base | |||
class WikiPage < ApplicationRecord | |||
include Redmine::SafeAttributes | |||
belongs_to :wiki |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class WikiRedirect < ActiveRecord::Base | |||
class WikiRedirect < ApplicationRecord | |||
belongs_to :wiki | |||
validates_presence_of :wiki_id, :title, :redirects_to |
@@ -17,7 +17,7 @@ | |||
# along with this program; if not, write to the Free Software | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
class WorkflowRule < ActiveRecord::Base | |||
class WorkflowRule < ApplicationRecord | |||
self.table_name = "#{table_name_prefix}workflows#{table_name_suffix}" | |||
belongs_to :role |
@@ -1,22 +1,6 @@ | |||
# frozen_string_literal: true | |||
module ActiveRecord | |||
class Base | |||
# Translate attribute names for validation errors display | |||
def self.human_attribute_name(attr, options = {}) | |||
prepared_attr = attr.to_s.delete_suffix('_id').sub(/^.+\./, '') | |||
class_prefix = name.underscore.tr('/', '_') | |||
redmine_default = [ | |||
:"field_#{class_prefix}_#{prepared_attr}", | |||
:"field_#{prepared_attr}" | |||
] | |||
options[:default] = redmine_default + Array(options[:default]) | |||
super | |||
end | |||
end | |||
# Undefines private Kernel#open method to allow using `open` scopes in models. | |||
# See Defect #11545 (http://www.redmine.org/issues/11545) for details. |
@@ -1,4 +1,4 @@ | |||
class Meeting < ActiveRecord::Base | |||
class Meeting < ApplicationRecord | |||
belongs_to :project | |||
acts_as_event :title => Proc.new {|o| "#{o.scheduled_on} Meeting"}, |
@@ -63,6 +63,6 @@ class RedminePluginModelGenerator < Rails::Generators::NamedBase | |||
end | |||
def parent_class_name | |||
options[:parent] || "ActiveRecord::Base" | |||
options[:parent] || "ApplicationRecord" | |||
end | |||
end |
@@ -18,4 +18,6 @@ | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
require_relative 'lib/acts_as_activity_provider' | |||
ActiveRecord::Base.send(:include, Redmine::Acts::ActivityProvider) | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send(:include, Redmine::Acts::ActivityProvider) | |||
end |
@@ -18,4 +18,6 @@ | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
require_relative 'lib/acts_as_attachable' | |||
ActiveRecord::Base.send(:include, Redmine::Acts::Attachable) | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send(:include, Redmine::Acts::Attachable) | |||
end |
@@ -18,4 +18,6 @@ | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
require_relative 'lib/acts_as_customizable' | |||
ActiveRecord::Base.send(:include, Redmine::Acts::Customizable) | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send(:include, Redmine::Acts::Customizable) | |||
end |
@@ -18,4 +18,6 @@ | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
require_relative 'lib/acts_as_event' | |||
ActiveRecord::Base.send(:include, Redmine::Acts::Event) | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send(:include, Redmine::Acts::Event) | |||
end |
@@ -18,4 +18,6 @@ | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
require_relative 'lib/acts_as_searchable' | |||
ActiveRecord::Base.send(:include, Redmine::Acts::Searchable) | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send(:include, Redmine::Acts::Searchable) | |||
end |
@@ -4,7 +4,7 @@ acts_as_tree | |||
Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children | |||
association. This requires that you have a foreign key column, which by default is called +parent_id+. | |||
class Category < ActiveRecord::Base | |||
class Category < ApplicationRecord | |||
acts_as_tree :order => "name" | |||
end | |||
@@ -1,4 +1,6 @@ | |||
# frozen_string_literal: true | |||
require_relative 'lib/active_record/acts/tree' | |||
ActiveRecord::Base.send :include, ActiveRecord::Acts::Tree | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send :include, ActiveRecord::Acts::Tree | |||
end |
@@ -10,7 +10,7 @@ module ActiveRecord | |||
# Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children | |||
# association. This requires that you have a foreign key column, which by default is called +parent_id+. | |||
# | |||
# class Category < ActiveRecord::Base | |||
# class Category < ApplicationRecord | |||
# acts_as_tree :order => "name" | |||
# end | |||
# |
@@ -42,7 +42,7 @@ def teardown_db | |||
end | |||
end | |||
class Mixin < ActiveRecord::Base | |||
class Mixin < ApplicationRecord | |||
end | |||
class TreeMixin < Mixin |
@@ -19,4 +19,6 @@ | |||
# Include hook code here | |||
require_relative 'lib/acts_as_watchable' | |||
ActiveRecord::Base.send(:include, Redmine::Acts::Watchable) | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send(:include, Redmine::Acts::Watchable) | |||
end |
@@ -1,4 +1,6 @@ | |||
# frozen_string_literal: true | |||
require_relative 'lib/gravatar' | |||
ActionView::Base.send :include, GravatarHelper::PublicMethods | |||
Rails.application.reloader.to_prepare do | |||
ApplicationRecord.send :include, GravatarHelper::PublicMethods | |||
end |
@@ -20,9 +20,9 @@ | |||
module Redmine | |||
module Preparation | |||
def self.prepare | |||
ActiveRecord::Base.include Redmine::Acts::Positioned | |||
ActiveRecord::Base.include Redmine::Acts::Mentionable | |||
ActiveRecord::Base.include Redmine::I18n | |||
ApplicationRecord.include Redmine::Acts::Positioned | |||
ApplicationRecord.include Redmine::Acts::Mentionable | |||
ApplicationRecord.include Redmine::I18n | |||
Scm::Base.add "Subversion" | |||
Scm::Base.add "Mercurial" |
@@ -27,16 +27,16 @@ class PatchesTest < ActiveSupport::TestCase | |||
Setting.default_language = 'en' | |||
end | |||
test "ActiveRecord::Base.human_attribute_name should transform name to field_name" do | |||
assert_equal l('field_last_login_on'), ActiveRecord::Base.human_attribute_name('last_login_on') | |||
test "ApplicationRecord.human_attribute_name should transform name to field_name" do | |||
assert_equal l('field_last_login_on'), ApplicationRecord.human_attribute_name('last_login_on') | |||
end | |||
test "ActiveRecord::Base.human_attribute_name should cut extra _id suffix for better validation" do | |||
assert_equal l('field_last_login_on'), ActiveRecord::Base.human_attribute_name('last_login_on_id') | |||
test "ApplicationRecord.human_attribute_name should cut extra _id suffix for better validation" do | |||
assert_equal l('field_last_login_on'), ApplicationRecord.human_attribute_name('last_login_on_id') | |||
end | |||
test "ActiveRecord::Base.human_attribute_name should default to humanized value if no translation has been found (useful for custom fields)" do | |||
assert_equal 'Patch name', ActiveRecord::Base.human_attribute_name('Patch name') | |||
test "ApplicationRecord.human_attribute_name should default to humanized value if no translation has been found (useful for custom fields)" do | |||
assert_equal 'Patch name', ApplicationRecord.human_attribute_name('Patch name') | |||
end | |||
test 'ActionView::Helpers::FormHelper.date_field should add max=9999-12-31 to limit year value to 4 digits by default' do |