Well renaming the column #author_id to #owner_id wasn't that bad either
parent
5b389b5131
commit
d68e7d5062
|
@ -1,5 +1,5 @@
|
|||
ActiveAdmin.register Mod do
|
||||
permit_params :name, :category_id, :author_id,
|
||||
permit_params :name, :category_id, :owner_id,
|
||||
:first_version_date, :last_version_date, :github, :forum_comments_count,
|
||||
:license, :license_url, :official_url, :forum_subforum_url,
|
||||
:forum_post_id, :forum_posts_ids,
|
||||
|
|
|
@ -85,14 +85,14 @@ class ModsController < ApplicationController
|
|||
]
|
||||
]
|
||||
|
||||
(permitted << :author_id) if can? :set_owner, Mod
|
||||
(permitted << :owner_id) if can? :set_owner, Mod
|
||||
(permitted << :visible) if can? :set_visibility, Mod
|
||||
(permitted << :slug) if can? :set_slug, Mod
|
||||
|
||||
permitted_params = params.require(:mod).permit(*permitted)
|
||||
|
||||
if cannot?(:set_owner, Mod) and current_user
|
||||
permitted_params.merge! author_id: current_user.id
|
||||
permitted_params.merge! owner_id: current_user.id
|
||||
end
|
||||
|
||||
if cannot?(:set_visibility, Mod)
|
||||
|
|
|
@ -57,7 +57,7 @@ class ModDecorator < Draper::Decorator
|
|||
|
||||
mod.authors.map do |author, i|
|
||||
link = h.link_to(author.name, author)
|
||||
if mod.author_id and (author.user_id == mod.author_id) and mod.authors.size > 1
|
||||
if mod.owner_id and (author.user_id == mod.owner_id) and mod.authors.size > 1
|
||||
maintainer = h.t('helpers.mods.maintainer')
|
||||
link + " (#{maintainer})"
|
||||
else
|
||||
|
|
|
@ -15,8 +15,8 @@ class Ability
|
|||
can :read, Bookmark, user_id: user.id
|
||||
can :create, Bookmark
|
||||
can :destroy, Bookmark, user_id: user.id
|
||||
can :manage, Mod, author_id: user.id
|
||||
can(:read, Mod) { |mod| mod.visible || mod.author_id == user.id }
|
||||
can :manage, Mod, owner_id: user.id
|
||||
can(:read, Mod) { |mod| mod.visible || mod.owner_id == user.id }
|
||||
cannot :set_slug, Mod
|
||||
cannot :set_owner, Mod
|
||||
cannot :set_visibility, Mod unless user.is_dev?
|
||||
|
|
|
@ -24,7 +24,7 @@ class Mod < ActiveRecord::Base
|
|||
#################
|
||||
|
||||
# belongs_to :author, class_name: 'User' # Deprecated, but don't remove it yet tons of tests break
|
||||
belongs_to :owner, class_name: 'User', foreign_key: :author_id
|
||||
belongs_to :owner, class_name: 'User'
|
||||
belongs_to :game_version_start, class_name: 'GameVersion'
|
||||
belongs_to :game_version_end, class_name: 'GameVersion'
|
||||
belongs_to :forum_post
|
||||
|
|
|
@ -12,8 +12,8 @@ class User < ActiveRecord::Base
|
|||
|
||||
auto_strip_attributes :name, squish: true, nullify: false
|
||||
|
||||
has_many :mods, dependent: :nullify, foreign_key: :author_id
|
||||
has_many :owned_mods, class_name: 'Mod', foreign_key: :author_id, dependent: :nullify # We'll change it to User#owner_id eventually
|
||||
has_many :mods, dependent: :nullify, foreign_key: :owner_id
|
||||
has_many :owned_mods, class_name: 'Mod', foreign_key: :owner_id, dependent: :nullify # We'll change it to User#owner_id eventually
|
||||
has_many :bookmarks
|
||||
has_many :bookmarked_mods, through: :bookmarks, source: :mod
|
||||
has_one :author
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class RenameModsAuthorIdToOwnerId < ActiveRecord::Migration
|
||||
def change
|
||||
rename_column :mods, :author_id, :owner_id
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20150807093532) do
|
||||
ActiveRecord::Schema.define(version: 20150807095122) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -218,7 +218,7 @@ ActiveRecord::Schema.define(version: 20150807093532) do
|
|||
|
||||
create_table "mods", force: true do |t|
|
||||
t.string "name"
|
||||
t.integer "author_id"
|
||||
t.integer "owner_id"
|
||||
t.datetime "first_version_date"
|
||||
t.datetime "last_version_date"
|
||||
t.string "github"
|
||||
|
@ -253,11 +253,11 @@ ActiveRecord::Schema.define(version: 20150807093532) do
|
|||
t.string "additional_contributors", default: "", null: false
|
||||
end
|
||||
|
||||
add_index "mods", ["author_id"], name: "index_mods_on_author_id", using: :btree
|
||||
add_index "mods", ["category_id"], name: "index_mods_on_category_id", using: :btree
|
||||
add_index "mods", ["forum_post_id"], name: "index_mods_on_forum_post_id", using: :btree
|
||||
add_index "mods", ["info_json_name"], name: "index_mods_on_info_json_name", using: :btree
|
||||
add_index "mods", ["last_version_id"], name: "index_mods_on_last_version_id", using: :btree
|
||||
add_index "mods", ["owner_id"], name: "index_mods_on_owner_id", using: :btree
|
||||
add_index "mods", ["slug"], name: "index_mods_on_slug", unique: true, using: :btree
|
||||
|
||||
create_table "mods_tags", force: true do |t|
|
||||
|
|
|
@ -256,7 +256,7 @@ describe ModsController, type: :controller do
|
|||
first_user = create :user
|
||||
second_user = create :user
|
||||
sign_in first_user
|
||||
submit_basic visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq false
|
||||
|
@ -270,7 +270,7 @@ describe ModsController, type: :controller do
|
|||
first_user = create :dev_user
|
||||
second_user = create :user
|
||||
sign_in first_user
|
||||
submit_basic visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq true
|
||||
|
@ -283,6 +283,17 @@ describe ModsController, type: :controller do
|
|||
submit_basic visible: false
|
||||
expect(Mod.first.visible).to eq false
|
||||
end
|
||||
|
||||
# it 'should set the developer as the sole author' do
|
||||
# user = create :dev_user
|
||||
# sign_in user
|
||||
# submit_basic
|
||||
# expect(response).to have_http_status :redirect
|
||||
# mod = Mod.first
|
||||
# expect(mod.authors.size).to eq 1
|
||||
# expect(mod.authors.first.name).to eq user.name
|
||||
# expect(mod.authors.first.user).to eq user
|
||||
# end
|
||||
end
|
||||
|
||||
|
||||
|
@ -291,7 +302,7 @@ describe ModsController, type: :controller do
|
|||
first_user = create :admin_user
|
||||
second_user = create :user
|
||||
sign_in first_user
|
||||
submit_basic visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq true
|
||||
|
@ -301,11 +312,23 @@ describe ModsController, type: :controller do
|
|||
|
||||
it 'should also be able to allow those values to be default' do
|
||||
sign_in create(:admin_user)
|
||||
submit_basic visible: false, author_id: nil, slug: ''
|
||||
submit_basic visible: false, owner_id: nil, slug: ''
|
||||
expect(Mod.first.visible).to eq false
|
||||
expect(Mod.first.owner).to eq nil
|
||||
expect(Mod.first.slug).to eq 'supermod'
|
||||
end
|
||||
|
||||
# it 'should set the owner as the sole author' do
|
||||
# admin = create :admin_user
|
||||
# user = create :dev_user
|
||||
# sign_in admin
|
||||
# submit_basic owner_id: user
|
||||
# expect(response).to have_http_status :redirect
|
||||
# mod = Mod.first
|
||||
# expect(mod.authors.size).to eq 1
|
||||
# expect(mod.authors.first.name).to eq user.name
|
||||
# expect(mod.authors.first.user).to eq user
|
||||
# end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -355,7 +378,7 @@ describe ModsController, type: :controller do
|
|||
second_user = create :user
|
||||
mod = create :mod, owner: first_user
|
||||
sign_in first_user
|
||||
submit_basic mod, visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic mod, visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq false
|
||||
|
@ -370,7 +393,7 @@ describe ModsController, type: :controller do
|
|||
second_user = create :user
|
||||
mod = create :mod, owner: first_user
|
||||
sign_in first_user
|
||||
submit_basic mod, visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic mod, visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq true
|
||||
|
@ -383,7 +406,7 @@ describe ModsController, type: :controller do
|
|||
second_user = create :user
|
||||
mod = create :mod, owner: second_user
|
||||
sign_in first_user
|
||||
submit_basic mod, visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic mod, visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :unauthorized
|
||||
end
|
||||
|
||||
|
@ -391,7 +414,7 @@ describe ModsController, type: :controller do
|
|||
first_user = create :dev_user
|
||||
mod = create :mod, owner: nil
|
||||
sign_in first_user
|
||||
submit_basic mod, visible: true, author_id: first_user.id, slug: 'rsarsarsa'
|
||||
submit_basic mod, visible: true, owner_id: first_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :unauthorized
|
||||
end
|
||||
|
||||
|
@ -410,7 +433,7 @@ describe ModsController, type: :controller do
|
|||
second_user = create :user
|
||||
mod = create :mod, owner: first_user
|
||||
sign_in first_user
|
||||
submit_basic mod, visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic mod, visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq true
|
||||
|
@ -422,7 +445,7 @@ describe ModsController, type: :controller do
|
|||
user = create(:admin_user)
|
||||
mod = create :mod, owner: user
|
||||
sign_in user
|
||||
submit_basic mod, visible: false, author_id: nil, slug: ''
|
||||
submit_basic mod, visible: false, owner_id: nil, slug: ''
|
||||
expect(Mod.first.visible).to eq false
|
||||
expect(Mod.first.owner).to eq nil
|
||||
expect(Mod.first.slug).to eq mod.slug
|
||||
|
@ -433,7 +456,7 @@ describe ModsController, type: :controller do
|
|||
second_user = create :user
|
||||
mod = create :mod, owner: second_user
|
||||
sign_in first_user
|
||||
submit_basic mod, visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic mod, visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq true
|
||||
|
@ -446,7 +469,7 @@ describe ModsController, type: :controller do
|
|||
second_user = create :user
|
||||
mod = create :mod, owner: nil
|
||||
sign_in first_user
|
||||
submit_basic mod, visible: true, author_id: second_user.id, slug: 'rsarsarsa'
|
||||
submit_basic mod, visible: true, owner_id: second_user.id, slug: 'rsarsarsa'
|
||||
expect(response).to have_http_status :redirect
|
||||
mod = Mod.first
|
||||
expect(mod.visible).to eq true
|
||||
|
|
|
@ -99,13 +99,13 @@ describe User, :type => :model do
|
|||
end
|
||||
|
||||
describe 'deletion' do
|
||||
it 'should blank the author_id of the mods belonging to this user if the user deletes the account' do
|
||||
it 'should blank the owner_id of the mods belonging to this user if the user deletes the account' do
|
||||
user = create :user
|
||||
mod = create :mod, owner: user
|
||||
expect(mod.author_id).to eq user.id
|
||||
expect(mod.owner_id).to eq user.id
|
||||
user.destroy
|
||||
mod.reload
|
||||
expect(mod.author_id).to eq nil
|
||||
expect(mod.owner_id).to eq nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue