Skip to content

Commit

Permalink
Fixed AREL visitor issue
Browse files Browse the repository at this point in the history
  • Loading branch information
beerlington committed Jun 29, 2011
1 parent 6fd71ed commit b48fa4a
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 2 deletions.
1 change: 1 addition & 0 deletions lib/classy_enum.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
require "classy_enum/active_record"
require "classy_enum/base"
require "classy_enum/class_methods"
require "classy_enum/instance_methods"
Expand Down
15 changes: 15 additions & 0 deletions lib/classy_enum/active_record.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module ActiveRecord #nodoc
class PredicateBuilder
def build_from_hash_with_classy_enum(attributes, default_table)

# Convert classy enum values to strings
attributes.map do |column, value|
attributes[column] = value.to_s if value.is_a? ClassyEnum::Base
end

build_from_hash_without_classy_enum(attributes, default_table)
end

alias_method_chain :build_from_hash, :classy_enum
end
end
23 changes: 23 additions & 0 deletions spec/active_record_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')

class ActiveDog < ActiveRecord::Base
classy_enum_attr :breed

# validates :name,
# :presence => true,
# :uniqueness => { :scope => [:breed] }
validates_uniqueness_of :name, :scope => [:breed]

end

describe ActiveDog do
before do
ActiveDog.create!(:name => 'Sebastian', :breed => :golden_retriever)
ActiveDog.create!(:name => 'Sirius', :breed => :husky)
end

it 'should allow validation with classy enum scope' do
dog = ActiveDog.new(:name => 'Sirius', :breed => :golden_retriever)
dog.should be_valid
end
end
10 changes: 8 additions & 2 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,20 @@
create_table :allow_blank_breed_dogs, :force => true do |t|
t.string :breed
end

create_table :allow_nil_breed_dogs, :force => true do |t|
t.string :breed
end

create_table :active_dogs, :force => true do |t|
t.string :breed
t.string :name
t.integer :age
end
end

class Breed < ClassyEnum::Base
enum_classes :golden_retriever, :snoop
enum_classes :golden_retriever, :snoop, :husky
end

class Dog < ActiveRecord::Base
Expand Down

0 comments on commit b48fa4a

Please sign in to comment.