2013-04-05 4 views
1

작동하지 않는 I 후속 관계가 있습니다액티브 범위는

User.last.incoming_delegations.from(User.find(43)) 
: 지금은

Delegation.from(User.find(43)) # I get list of delegations from user 
User.last.incoming_delegations # I get list of incoming delegations 

을 수행 할 때하지만 난 때

class User < ActiveRecord::Base 
    has_many :incoming_delegations, 
    :class_name => "Delegation", :foreign_key => :to_user_id, 
    :conditions => { :active => true } 
    #... 
end 

class Delegation < ActiveRecord::Base 
    belongs_to :from_user, :class_name => "User" 
    belongs_to :to_user, :class_name => "User" 

    scope :from, lambda { |user| where(:from_user_id => user.id) } 
    scope :to, lambda { |user| where(:to_user_id => user.id) } 
    #... 
end 

을나는이 오류 메시지가 다음받을 617,451,515,

:

TypeError: Cannot visit User 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/visitor.rb:25:in `rescue in visit' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/visitor.rb:19:in `visit' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/to_sql.rb:281:in `visit_Arel_Nodes_JoinSource' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/visitor.rb:19:in `visit' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/to_sql.rb:135:in `visit_Arel_Nodes_SelectCore' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/mysql.rb:41:in `visit_Arel_Nodes_SelectCore' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/to_sql.rb:121:in `block in visit_Arel_Nodes_SelectStatement' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/to_sql.rb:121:in `map' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/to_sql.rb:121:in `visit_Arel_Nodes_SelectStatement' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/mysql.rb:36:in `visit_Arel_Nodes_SelectStatement' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/visitor.rb:19:in `visit' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/visitor.rb:5:in `accept' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/to_sql.rb:19:in `accept' 
     from /home/jiri/.rvm/gems/[email protected]/gems/arel-3.0.2/lib/arel/visitors/bind_visitor.rb:11:in `accept' 
     from /home/jiri/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in 
     from /home/jiri/.rvm/gems/[email protected]/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/database_statements.rb:18:i 
... 1 levels... 

어떤 생각이 문제의 원인이 무엇인지?

답변

5
scope :from, lambda { |user| where(:from_user_id => user.id) } 

from은 범위에 나쁜 이름입니다. 이름이 뭔가 다른. ARel 내

This from method은 당신이 당신의 Delegation 클래스의 :from 범위를 호출하려고 할 때 사용됩니다.