Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,7 @@ test/version_tmp
tmp
.DS_Store
*.lock
.idea
.rakeTasks
.byebug_history
.ruby-version
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ language: 'ruby'
script: "bundle exec rake spec"

rvm:
- 1.9.3
- 2.0.0
- 2.5.1
- 2.6.5

gemfile:
gemfiles/active_record_40.gemfile
Expand Down
2 changes: 1 addition & 1 deletion acts_as_user.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "shoulda-matchers"
spec.add_development_dependency "activesupport"
spec.add_development_dependency 'database_cleaner'
spec.add_development_dependency 'debugger'
spec.add_development_dependency 'byebug'

spec.add_dependency "orm_adapter"
spec.add_runtime_dependency "activerecord"
Expand Down
24 changes: 12 additions & 12 deletions lib/acts_as_user/user_delegate.rb
Original file line number Diff line number Diff line change
@@ -1,28 +1,21 @@
module ActsAsUser
module UserDelegate

def self.included(base)
options = base.class_variable_get('@@acts_as_user_options')
if !!options[:has_many]
base.has_many :users, :as => :userable, :dependent => :destroy, :autosave => true
base.alias_method_chain :users, :autobuild
base.after_initialize :auto_build_users
base.accepts_nested_attributes_for :users, :allow_destroy => true
else
base.has_one :user, :as => :userable, :dependent => :destroy, :autosave => true
base.alias_method_chain :user, :autobuild
base.validate :user_must_be_valid
base.extend ClassMethods
base.define_user_accessors
base.alias_method :user, :auto_build_user
end
end

def user_with_autobuild
user_without_autobuild || build_user
end

def users_with_autobuild
users_without_autobuild.present? ? users_without_autobuild : (users_without_autobuild << User.new)
end

def method_missing(meth, *args, &blk)
user.send(meth, *args, &blk)
rescue NoMethodError
Expand All @@ -33,6 +26,14 @@ def deep_inspect
"#{self.inspect} -- #{self.user.inspect}"
end

def auto_build_user
build_user
end

def auto_build_users
users.present? ? users : (users << User.new)
end

protected

def user_must_be_valid
Expand All @@ -44,7 +45,6 @@ def user_must_be_valid
end

module ClassMethods

def define_user_accessors
#We check the user columns to declare them as attributes to delegate
all_attributes = User.columns.map(&:name)
Expand All @@ -65,7 +65,7 @@ def #{attrib}=(value)
def #{attrib}?
self.user.#{attrib}?
end
RUBY
RUBY
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions lib/acts_as_user/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module ActsAsUser
VERSION = "1.2.6"
end
VERSION = "2.0.0"
end
2 changes: 2 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,5 @@
load File.dirname(__FILE__) + '/support/models.rb'

I18n.enforce_available_locales = false

include Shoulda::Matchers::ActiveRecord