Skip to content

Commit

Permalink
Change belongs_to_required_by_default to true (#5888)
Browse files Browse the repository at this point in the history
  • Loading branch information
ykzts authored and Gargron committed Jan 19, 2018
1 parent 7233ac0 commit 238de58
Show file tree
Hide file tree
Showing 23 changed files with 53 additions and 51 deletions.
2 changes: 1 addition & 1 deletion app/models/account.rb
Expand Up @@ -102,7 +102,7 @@ class Account < ApplicationRecord
has_many :lists, through: :list_accounts

# Account migrations
belongs_to :moved_to_account, class_name: 'Account'
belongs_to :moved_to_account, class_name: 'Account', optional: true

scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) }
Expand Down
2 changes: 1 addition & 1 deletion app/models/account_domain_block.rb
Expand Up @@ -13,7 +13,7 @@
class AccountDomainBlock < ApplicationRecord
include Paginable

belongs_to :account, required: true
belongs_to :account
validates :domain, presence: true, uniqueness: { scope: :account_id }

after_create :remove_blocking_cache
Expand Down
4 changes: 2 additions & 2 deletions app/models/admin/action_log.rb
Expand Up @@ -16,8 +16,8 @@
class Admin::ActionLog < ApplicationRecord
serialize :recorded_changes

belongs_to :account, required: true
belongs_to :target, required: true, polymorphic: true
belongs_to :account
belongs_to :target, polymorphic: true

default_scope -> { order('id desc') }

Expand Down
4 changes: 2 additions & 2 deletions app/models/block.rb
Expand Up @@ -13,8 +13,8 @@
class Block < ApplicationRecord
include Paginable

belongs_to :account, required: true
belongs_to :target_account, class_name: 'Account', required: true
belongs_to :account
belongs_to :target_account, class_name: 'Account'

validates :account_id, uniqueness: { scope: :target_account_id }

Expand Down
4 changes: 2 additions & 2 deletions app/models/conversation_mute.rb
Expand Up @@ -9,6 +9,6 @@
#

class ConversationMute < ApplicationRecord
belongs_to :account, required: true
belongs_to :conversation, required: true
belongs_to :account
belongs_to :conversation
end
4 changes: 2 additions & 2 deletions app/models/favourite.rb
Expand Up @@ -13,8 +13,8 @@
class Favourite < ApplicationRecord
include Paginable

belongs_to :account, inverse_of: :favourites, required: true
belongs_to :status, inverse_of: :favourites, counter_cache: true, required: true
belongs_to :account, inverse_of: :favourites
belongs_to :status, inverse_of: :favourites, counter_cache: true

has_one :notification, as: :activity, dependent: :destroy

Expand Down
5 changes: 2 additions & 3 deletions app/models/follow.rb
Expand Up @@ -14,12 +14,11 @@
class Follow < ApplicationRecord
include Paginable

belongs_to :account, counter_cache: :following_count, required: true
belongs_to :account, counter_cache: :following_count

belongs_to :target_account,
class_name: 'Account',
counter_cache: :followers_count,
required: true
counter_cache: :followers_count

has_one :notification, as: :activity, dependent: :destroy

Expand Down
4 changes: 2 additions & 2 deletions app/models/follow_request.rb
Expand Up @@ -14,8 +14,8 @@
class FollowRequest < ApplicationRecord
include Paginable

belongs_to :account, required: true
belongs_to :target_account, class_name: 'Account', required: true
belongs_to :account
belongs_to :target_account, class_name: 'Account'

has_one :notification, as: :activity, dependent: :destroy

Expand Down
2 changes: 1 addition & 1 deletion app/models/import.rb
Expand Up @@ -20,7 +20,7 @@ class Import < ApplicationRecord

self.inheritance_column = false

belongs_to :account, required: true
belongs_to :account

enum type: [:following, :blocking, :muting]

Expand Down
2 changes: 1 addition & 1 deletion app/models/invite.rb
Expand Up @@ -14,7 +14,7 @@
#

class Invite < ApplicationRecord
belongs_to :user, required: true
belongs_to :user
has_many :users, inverse_of: :invite

scope :available, -> { where(expires_at: nil).or(where('expires_at >= ?', Time.now.utc)) }
Expand Down
2 changes: 1 addition & 1 deletion app/models/list.rb
Expand Up @@ -15,7 +15,7 @@ class List < ApplicationRecord

PER_ACCOUNT_LIMIT = 50

belongs_to :account
belongs_to :account, optional: true

has_many :list_accounts, inverse_of: :list, dependent: :destroy
has_many :accounts, through: :list_accounts
Expand Down
6 changes: 3 additions & 3 deletions app/models/list_account.rb
Expand Up @@ -10,9 +10,9 @@
#

class ListAccount < ApplicationRecord
belongs_to :list, required: true
belongs_to :account, required: true
belongs_to :follow, required: true
belongs_to :list
belongs_to :account
belongs_to :follow

validates :account_id, uniqueness: { scope: :list_id }

Expand Down
4 changes: 2 additions & 2 deletions app/models/media_attachment.rb
Expand Up @@ -45,8 +45,8 @@ class MediaAttachment < ApplicationRecord
},
}.freeze

belongs_to :account, inverse_of: :media_attachments
belongs_to :status, inverse_of: :media_attachments
belongs_to :account, inverse_of: :media_attachments, optional: true
belongs_to :status, inverse_of: :media_attachments, optional: true

has_attached_file :file,
styles: ->(f) { file_styles f },
Expand Down
4 changes: 2 additions & 2 deletions app/models/mention.rb
Expand Up @@ -11,8 +11,8 @@
#

class Mention < ApplicationRecord
belongs_to :account, inverse_of: :mentions, required: true
belongs_to :status, required: true
belongs_to :account, inverse_of: :mentions
belongs_to :status

has_one :notification, as: :activity, dependent: :destroy

Expand Down
4 changes: 2 additions & 2 deletions app/models/mute.rb
Expand Up @@ -14,8 +14,8 @@
class Mute < ApplicationRecord
include Paginable

belongs_to :account, required: true
belongs_to :target_account, class_name: 'Account', required: true
belongs_to :account
belongs_to :target_account, class_name: 'Account'

validates :account_id, uniqueness: { scope: :target_account_id }

Expand Down
18 changes: 9 additions & 9 deletions app/models/notification.rb
Expand Up @@ -26,15 +26,15 @@ class Notification < ApplicationRecord

STATUS_INCLUDES = [:account, :application, :stream_entry, :media_attachments, :tags, mentions: :account, reblog: [:stream_entry, :account, :application, :media_attachments, :tags, mentions: :account]].freeze

belongs_to :account
belongs_to :from_account, class_name: 'Account'
belongs_to :activity, polymorphic: true

belongs_to :mention, foreign_type: 'Mention', foreign_key: 'activity_id'
belongs_to :status, foreign_type: 'Status', foreign_key: 'activity_id'
belongs_to :follow, foreign_type: 'Follow', foreign_key: 'activity_id'
belongs_to :follow_request, foreign_type: 'FollowRequest', foreign_key: 'activity_id'
belongs_to :favourite, foreign_type: 'Favourite', foreign_key: 'activity_id'
belongs_to :account, optional: true
belongs_to :from_account, class_name: 'Account', optional: true
belongs_to :activity, polymorphic: true, optional: true

belongs_to :mention, foreign_type: 'Mention', foreign_key: 'activity_id', optional: true
belongs_to :status, foreign_type: 'Status', foreign_key: 'activity_id', optional: true
belongs_to :follow, foreign_type: 'Follow', foreign_key: 'activity_id', optional: true
belongs_to :follow_request, foreign_type: 'FollowRequest', foreign_key: 'activity_id', optional: true
belongs_to :favourite, foreign_type: 'Favourite', foreign_key: 'activity_id', optional: true

validates :account_id, uniqueness: { scope: [:activity_type, :activity_id] }
validates :activity_type, inclusion: { in: TYPE_CLASS_MAP.values }
Expand Down
2 changes: 1 addition & 1 deletion app/models/report.rb
Expand Up @@ -17,7 +17,7 @@
class Report < ApplicationRecord
belongs_to :account
belongs_to :target_account, class_name: 'Account'
belongs_to :action_taken_by_account, class_name: 'Account'
belongs_to :action_taken_by_account, class_name: 'Account', optional: true

scope :unresolved, -> { where(action_taken: false) }
scope :resolved, -> { where(action_taken: true) }
Expand Down
6 changes: 3 additions & 3 deletions app/models/session_activation.rb
Expand Up @@ -15,9 +15,9 @@
#

class SessionActivation < ApplicationRecord
belongs_to :user, inverse_of: :session_activations, required: true
belongs_to :access_token, class_name: 'Doorkeeper::AccessToken', dependent: :destroy
belongs_to :web_push_subscription, class_name: 'Web::PushSubscription', dependent: :destroy
belongs_to :user, inverse_of: :session_activations
belongs_to :access_token, class_name: 'Doorkeeper::AccessToken', dependent: :destroy, optional: true
belongs_to :web_push_subscription, class_name: 'Web::PushSubscription', dependent: :destroy, optional: true

delegate :token,
to: :access_token,
Expand Down
12 changes: 6 additions & 6 deletions app/models/status.rb
Expand Up @@ -33,14 +33,14 @@ class Status < ApplicationRecord

enum visibility: [:public, :unlisted, :private, :direct], _suffix: :visibility

belongs_to :application, class_name: 'Doorkeeper::Application'
belongs_to :application, class_name: 'Doorkeeper::Application', optional: true

belongs_to :account, inverse_of: :statuses, counter_cache: true, required: true
belongs_to :in_reply_to_account, foreign_key: 'in_reply_to_account_id', class_name: 'Account'
belongs_to :conversation
belongs_to :account, inverse_of: :statuses, counter_cache: true
belongs_to :in_reply_to_account, foreign_key: 'in_reply_to_account_id', class_name: 'Account', optional: true
belongs_to :conversation, optional: true

belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, counter_cache: :reblogs_count
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies, optional: true
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, counter_cache: :reblogs_count, optional: true

has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy
Expand Down
4 changes: 2 additions & 2 deletions app/models/status_pin.rb
Expand Up @@ -11,8 +11,8 @@
#

class StatusPin < ApplicationRecord
belongs_to :account, required: true
belongs_to :status, required: true
belongs_to :account
belongs_to :status

validates_with StatusPinValidator
end
2 changes: 1 addition & 1 deletion app/models/subscription.rb
Expand Up @@ -19,7 +19,7 @@ class Subscription < ApplicationRecord
MIN_EXPIRATION = 1.day.to_i
MAX_EXPIRATION = 30.days.to_i

belongs_to :account, required: true
belongs_to :account

validates :callback_url, presence: true
validates :callback_url, uniqueness: { scope: :account_id }
Expand Down
4 changes: 2 additions & 2 deletions app/models/user.rb
Expand Up @@ -50,8 +50,8 @@ class User < ApplicationRecord
devise :registerable, :recoverable, :rememberable, :trackable, :validatable,
:confirmable

belongs_to :account, inverse_of: :user, required: true
belongs_to :invite, counter_cache: :uses
belongs_to :account, inverse_of: :user
belongs_to :invite, counter_cache: :uses, optional: true
accepts_nested_attributes_for :account

has_many :applications, class_name: 'Doorkeeper::Application', as: :owner
Expand Down
3 changes: 3 additions & 0 deletions config/application.rb
Expand Up @@ -18,6 +18,9 @@

module Mastodon
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 5.1

# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
Expand Down

0 comments on commit 238de58

Please sign in to comment.