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