Skip to content

Instantly share code, notes, and snippets.

@knowtheory
Created April 14, 2009 09:44
Show Gist options
  • Select an option

  • Save knowtheory/95089 to your computer and use it in GitHub Desktop.

Select an option

Save knowtheory/95089 to your computer and use it in GitHub Desktop.
>> Movie.all(Movie.tags => [1,2,3])
~ (0.000375) SET sql_auto_is_null = 0
~ (0.000130) SET SESSION sql_mode = 'ANSI,NO_AUTO_VALUE_ON_ZERO,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION,NO_UNSIGNED_SUBTRACTION,TRADITIONAL'
~ QUERY INVALID: #<DataMapper::Query @repository=:default @model=Movie @fields=[#<Property:Movie:id>, #<Property:Movie:slug>, #<Property:Movie:title>, #<Property:Movie:user_id>, #<Property:Movie:state>, #<Property:Movie:document_type>, #<Property:Movie:created_at>, #<Property:Movie:updated_at>] @links=[#<DataMapper::Associations::RelationshipChain:0x20e124c @parent_model=Movie, @extra_links=[], @parent_properties=nil, @repository_name=:default, @child_key=#<PropertySet:{#<Property:Tag::MovieTag:movie_id>}>, @child_model="Tag", @parent_key=#<PropertySet:{#<Property:Movie:id>}>, @mutable=false, @options={:child_key=>nil, :child_model=>"Tag", :max=>Infinity, :parent_model=>Movie, :near_relationship_name=>:taggings, :parent_key=>nil, :remote_relationship_name=>:tags, :repository_name=>:default, :min=>0}, @name=:taggings, @remote_relationship_name=:tags, @child_properties=nil, @query={}, @near_relationship_name=:taggings>] @conditions=[[:eql, #<DataMapper::Query::Path:0x256767c @relationships=[#<DataMapper::Associations::RelationshipChain:0x20e124c @parent_model=Movie, @extra_links=[], @parent_properties=nil, @repository_name=:default, @child_key=#<PropertySet:{#<Property:Tag::MovieTag:movie_id>}>, @child_model="Tag", @parent_key=#<PropertySet:{#<Property:Movie:id>}>, @mutable=false, @options={:child_key=>nil, :child_model=>"Tag", :max=>Infinity, :parent_model=>Movie, :near_relationship_name=>:taggings, :parent_key=>nil, :remote_relationship_name=>:tags, :repository_name=>:default, :min=>0}, @name=:taggings, @remote_relationship_name=:tags, @child_properties=nil, @query={}, @near_relationship_name=:taggings>], @repository=#<DataMapper::Repository:0x256758c @identity_maps={}, @name=:default>, @model=Tag::MovieTag>, [1, 2, 3]]] @order=[#<DataMapper::Query::Direction #<Property:Movie:id> asc>] @limit=nil @offset=0 @reload=false @unique=false> (private method `gsub' called for nil:NilClass)
~ private method `gsub' called for nil:NilClass
NoMethodError: private method `gsub' called for nil:NilClass
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/mysql_adapter.rb:21:in `quote_column_name'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:386:in `original_property_to_column_name'
from /Library/Ruby/Gems/1.8/gems/dm-aggregates-0.9.11/lib/dm-aggregates/adapters/data_objects_adapter.rb:56:in `property_to_column_name'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:335:in `condition_statement'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:333:in `map'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:333:in `condition_statement'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:297:in `conditions_statement'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:297:in `map'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:297:in `conditions_statement'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:235:in `read_statement'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:41:in `read_many'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:173:in `with_connection'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/adapters/data_objects_adapter.rb:40:in `read_many'
from /Library/Ruby/Gems/1.8/gems/extlib-0.9.11/lib/extlib/lazy_array.rb:373:in `[]'
from /Library/Ruby/Gems/1.8/gems/extlib-0.9.11/lib/extlib/lazy_array.rb:373:in `lazy_load'
from /Library/Ruby/Gems/1.8/gems/extlib-0.9.11/lib/extlib/lazy_array.rb:461:in `inspect'
from /Library/Ruby/Gems/1.8/gems/wirble-0.1.2/./wirble.rb:417:in `output_value'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:151:in `eval_input'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:259:in `signal_status'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:147:in `eval_input'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:146:in `eval_input'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:70:in `start'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:69:in `catch'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:69:in `start'
from /Library/Ruby/Gems/1.8/gems/merb-core-1.0.11/lib/merb-core/rack/adapter/irb.rb:161:in `start'
from /Library/Ruby/Gems/1.8/gems/merb-core-1.0.11/lib/merb-core/server.rb:174:in `bootup'
from /Library/Ruby/Gems/1.8/gems/merb-core-1.0.11/lib/merb-core/server.rb:42:in `start'
from /Library/Ruby/Gems/1.8/gems/merb-core-1.0.11/lib/merb-core.rb:170:in `start'
from /Library/Ruby/Gems/1.8/gems/merb-core-1.0.11/bin/merb:11
from /usr/bin/merb:19:in `load'
from /usr/bin/merb:19>>
class Tag
include DataMapper::Resource
property :id, Serial
property :name, String
class MovieTag
include DataMapper::Resource
property :tag_id, Integer, :key => true
property :movie_id, Integer, :key => true
property :created_at, DateTime
property :updated_at, DateTime
belongs_to :movie
belongs_to :tag
end
has n, :taggings, :class_name=>Tag::MovieTag, :child_key => [:tag_id]
has n, :movies, :through => :taggings
end
class Movie
include DataMapper::Resource
has n, :taggings, :class_name=>Tag::MovieTag, :child_key => [:movie_id]
has n, :tags, :through => :taggings
end
>> Movie.to_query(DataMapper.repository,Movie.key,{"taggings.tag_id" => [1,2,3]})
=> #<DataMapper::Query @repository=:default @model=Movie @fields=[#<Property:Movie:id>, #<Property:Movie:slug, #<Property:Movie:title, #<Property:Movie:user_id, #<Property:Movie:state, #<Property:Movie:document_type, #<Property:Movie:created_at, #<Property:Movie:updated_at] @links=[#<DataMapper::Associations::Relationship:0x20e5af4 @parent_model=Movie, @parent_properties=[:tag_id], @repository_name=:default, @child_key=#<PropertySet:{#<Property:Tag::MovieTag:movie_id>}, child_modelTag::MovieTag, parent_key#<PropertySet:{nil}, @options={:child_key=>[:movie_id], :max=>Infinity, :class_name=>Tag::MovieTag, :parent_key=>[:tag_id], :min=>0}, name:taggings, child_properties[:movie_id], query{}] conditions[[:eql, #<Property:Movie:id, #<Property:Movie:id], [:eql, #<DataMapper::Query::Path:0x256555c @relationships=[#<DataMapper::Associations::Relationship:0x20e5af4 @parent_model=Movie, @parent_properties=[:tag_id], @repository_name=:default, @child_key=#<PropertySet:{#<Property:Tag::MovieTag:movie_id>}, child_modelTag::MovieTag, parent_key#<PropertySet:{nil}, @options={:child_key=>[:movie_id], :max=>Infinity, :class_name=>Tag::MovieTag, :parent_key=>[:tag_id], :min=>0}, name:taggings, child_properties[:movie_id], query{}], repository#<DataMapper::Repository:0x25654e4 @identity_maps={}, @name=:default>, modelTag::MovieTag, property#<Property:Tag::MovieTag:tag_id, [1, 2, 3]]] @order=[#<DataMapper::Query::Direction #<Property:Movie:id> asc] limitnil offset0 reloadfalse uniquefalse
>> Movie.to_query(DataMapper.repository,Movie.key,{"tags.id" => [1,2,3]})
ArgumentError: Unknown property 'id'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:667:in `method_missing'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:466:in `send'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:466:in `append_condition'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:466:in `each'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:466:in `append_condition'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:246:in `initialize'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:245:in `each'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/query.rb:245:in `initialize'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/model.rb:395:in `new'
from /Library/Ruby/Gems/1.8/gems/dm-core-0.9.11/lib/dm-core/model.rb:395:in `to_query'
from (irb):26
from :0
>>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment