Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 沉溺其中有很多关系_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 沉溺其中有很多关系

Ruby on rails 沉溺其中有很多关系,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,一个用户有很多工作 你觉得怎么样? 这是获取给定就业对象的所有同级(属于同一用户)的有效且清晰的方法吗 class Employment < ActiveRecord::Base belongs_to :user has_many :silblings, :primary_key => :user_id, :foreign_key => :user_id, :class_name => 'Employment' end 现在我可以做一些

一个用户有很多工作

你觉得怎么样? 这是获取给定就业对象的所有同级(属于同一用户)的有效且清晰的方法吗

class Employment < ActiveRecord::Base
  belongs_to :user

  has_many :silblings,
    :primary_key => :user_id,
    :foreign_key => :user_id,
    :class_name => 'Employment'
end
现在我可以做一些事情,比如:

  self.silblings.except(self.id).each do |silbling|
    puts silbling
  end
生成的SQL语句如下所示:

  SELECT * FROM `employments` 
  WHERE (`employments`.user_id = 49) 
  AND ((id != 46) AND (`employments`.user_id = 49))
“不,你滥用XY,而使用这个XZ”之类的评论非常受欢迎


Reto看起来不错。除了SQL在查询中加倍('employments'.user_id=49)。没什么大不了的。如果你真的不想要,你可以这样定义兄弟姐妹:

class Employment < ActiveRecord::Base
  belongs_to :user

  named_scope :for_user, lambda { |user|
    { :conditions => {:user_id => user} }
  }

  named_scope :except, lambda {|employment|
    {:conditions => ["id != ?", employment}
  }

  def siblings 
    Employment.for_user(user_id).except(id)
  end

end
class Employment{:user\u id=>user}
}
命名范围:除lambda{124;就业|
{:条件=>[“id!=?”,就业}
}
def兄弟姐妹
就业。针对用户(用户id)。除了(id)
结束
结束

信不信由你,你仍然可以在
@employment.sides
上调用命名作用域。虽然这样做意味着你不能分配给sides。sides调用会更干净一些。性能可能会有所提高,但可能不会有太大的不同。

for\u用户看起来更干净、更简单、更可靠cer。它不太通用,但更明确。我想我会去的。重复是一个无关的错误。我在发布问题后不久发现了相应的错误报告:谢谢你的输入。
class Employment < ActiveRecord::Base
  belongs_to :user

  named_scope :for_user, lambda { |user|
    { :conditions => {:user_id => user} }
  }

  named_scope :except, lambda {|employment|
    {:conditions => ["id != ?", employment}
  }

  def siblings 
    Employment.for_user(user_id).except(id)
  end

end