Well renaming the column #author_id to #owner_id wasn't that bad either

master
Zequez 2015-08-07 07:05:14 -03:00
parent 5b389b5131
commit d68e7d5062
10 changed files with 55 additions and 27 deletions

View File

@ -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,

View File

@ -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)

View File

@ -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

View File

@ -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?

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,5 @@
class RenameModsAuthorIdToOwnerId < ActiveRecord::Migration
def change
rename_column :mods, :author_id, :owner_id
end
end

View File

@ -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|

View File

@ -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

View File

@ -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