У пользователя много занятий.
Что ты думаешь?
Является ли это действительным и понятным способом получения всех братьев и сестер (принадлежащих одному пользователю) данного объекта занятости?
class Employment < ActiveRecord::Base
belongs_to :user
has_many :silblings,
:primary_key => :user_id,
:foreign_key => :user_id,
:class_name => 'Employment'
end
Это может быть расширено следующей именованной областью действия:
named_scope :except, lambda {|id| {:conditions => ["id != ?", id]} if id}
Теперь я могу делать такие вещи, как:
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