I see that I got the plurality wrong on a name association statement (the 
many_to_many in the Interface block).
After I changed that my queries were executing correctly.

On Wednesday, November 28, 2012 8:09:41 PM UTC-7, Jarrod Manzer wrote:
>
> My bad. What I'm working on is a Sequel Model for network interfaces 
> originating from some SNMP poller data that I have. 
> My problem stems from the fact that singular form of the word 'address' is 
> somehow 'addres' on the associations in my objects.
>
> *require 'sequel'*
> *
> *
> *class Device < Sequel::Model
> *
> *  one_to_many :interfaces*
> *end*
> *class Interface < Sequel::Model*
> *  many_to_one :device*
> *  many_to_many :ipaddress, :null => true*
> *end*
> *class Ipaddress < Sequel::Model*
> *  many_to_one  :device*
> *  many_to_many :interfaces,*
> *    :left_key   => :ipaddress_id,*
> *    :right_key  => :interface_id,*
> *    :join_table => :interfaces_ipaddresses,*
> *    :null       => false*
> *end*
>
> The IRB output below shows those method names. 
>
> *irb(main):025:0> Interface.first.methods.grep(/addre/i)*
> *=> [:ipaddress_id, :ipaddress_id=, :ipaddress_dataset, :ipaddress, 
> :add_ipaddres, :remove_ipaddres, :remove_all_ipaddress]*
>
> And when I try the following I get what I think is the problem I described 
> above.
>
> *irb(main):038:0* Interface.first.ipaddress_dataset*
> *NameError: uninitialized constant Ipaddres*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/inflections.rb:125:in
>  
> `constantize'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/inflections.rb:125:in
>  
> `module_eval'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/inflections.rb:125:in
>  
> `constantize'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:57:in
>  
> `block in associated_class'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:265:in
>  
> `block (2 levels) in cached_fetch'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:265:in
>  
> `fetch'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:265:in
>  
> `block in cached_fetch'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:263:in
>  
> `fetch'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:263:in
>  
> `cached_fetch'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:57:in
>  
> `associated_class'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:1138:in
>  
> `block in def_many_to_many'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:1471:in
>  
> `_dataset'*
> *        from 
> /usr/local/lib/ruby/gems/1.9.1/gems/sequel-3.40.0/lib/sequel/model/associations.rb:1103:in
>  
> `block in def_association_dataset_methods'*
> *        from (irb):38*
> *        from /usr/local/bin/irb:12:in `<main>'*
>
> I was thinking reflections would have something to do with my problem. 
> And thanks to all who reply to my problem. :-)
>
> On Wednesday, November 28, 2012 4:06:39 PM UTC-7, Jeremy Evans wrote:
>>
>> On Wednesday, November 28, 2012 2:52:26 PM UTC-8, Jarrod Manzer wrote:
>>>
>>> Hello,
>>> I've been having some problems with the word "address" in terms of 
>>> pluralization and singularization of a field name.
>>> When I try to name my model 'Ipaddress' it produces new methods like the 
>>> following...
>>>
>>> :ipaddress_id
>>> :ipaddress_id=
>>> :ipaddress_dataset
>>> :ipaddress
>>> :add_ipaddres <----- missing an 's'
>>> :remove_ipaddres <-also missing an 's'
>>> :remove_all_ipaddress
>>>
>>> For the two incorrectly named methods I cannot seem to find the cause of 
>>> to fix it. I was hoping someone here might have an answer.
>>> I'm using Ruby 1.9.3p194 and sequel (3.40.0).
>>>
>>>
>>>  
>> First, I can only assume you are talking about naming associations, not 
>> models, based on the methods you list.  It appears as though are you 
>> creating a *_to_many association using :ip_address as the name as the name 
>> instead of :ip_addresses.  *_to_many association names must be plural, this 
>> is explicitly mentioned in the documentation.
>>
>> If that doesn't solve your issue, you probably should post the code you 
>> are using.  While I appreciate a good guessing game as much as the next 
>> person, it's not a very efficient approach to debugging.
>>
>> Jeremy
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sequel-talk/-/Wc_6AcZfZqYJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.

Reply via email to