Question
I have 2 models. Report
and Server
that have a belongs_to and has_many
relationship. I created an accessor method using delegate
that allows a
Report
to find its associated Server.company_id
. Now, I want to run a
query on Report
that allows me to find all Report
that are associated with
a specific Server
that has a specific company_id
attribute of 5.
Here are my two models. And yes I know the current query wont work since
Report
does not have an attribute company_id
.
And no, I dont want to store company_id
inside of Report
since that
information doesn't belong in Report
.
Report
class Report < ActiveRecord::Base
belongs_to :server
delegate :company_id, :to => :server
class << self
def method(url, base_url)
#Report.where(company_id: 5)
end
end
end
Server
class Server < ActiveRecord::Base
attr_accessible :company_id
has_many :reports
end
Answer
You can perform a query like this:
Report.joins(:servers).where(:servers => {:company_id => 5})
To me, this is the cleaner solution to raw SQL.