我有三个由非 Rails 应用程序创建的表。以下模型只是表的关联。
class Client < ActiveRecord::Base
has_many :programs
has_many :locations, :through => :programs
end
class Program < ActiveRecord::Base
belongs_to :location
belongs_to :client
end
class Location < ActiveRecord::Base
has_many :programs
has_many :clients, :through => :programs
end
我想要一种更简单的方法来按位置列出客户的所有程序。
我认为下面的代码会起作用,但它会返回该位置的所有程序,这完全有道理。
@client.locations.each do |location|
<h2>location.name</h2>
<ul>
location.programs.each do |program|
<li>program.name</li>
end
</ul>
end
我目前正在使用
@client.locations.each do |location|
<h2>location.name</h2>
<ul>
Program.where(:location_id => location.id, :client_id => @client.id).each do |program|
<li>program.name</li>
end
</ul>
end
但这违反了 MVC 原则,而且很丑陋。
我不确定如何优雅地编写此代码,并希望输入。