从Rails 4相关模型中检索信息

时间:2013-12-14 18:35:27

标签: ruby-on-rails join ruby-on-rails-4 model-associations

使用指定的一组功能检索所有独特场地的最有效方法是什么?

在控制器中,我有:

@venues = Venue.all
@venues = @venues.features.where('feature.id == ' 1).distinct

以下是我的模型定义方式:

class Neighborhood < ActiveRecord::Base
  has_many :venues
end

class Venue < ActiveRecord::Base
  belongs_to :neighborhood
  has_many :features
end

class FeatureType < ActiveRecord::Base
  has_many :features  
end

class Feature < ActiveRecord::Base
  belongs_to :venue
  belongs_to :feature_type
end

2 个答案:

答案 0 :(得分:2)

用英语思考一下。如果场地有许多功能,你会问“功能的ID是什么?”响应将是:“有许多功能,哪一个?”

:has_many关联为您提供以下方法:venure.features。这为您提供了所有“许多”相关功能。要获得一个Id,您可以执行以下操作:venue.features.first.id

答案 1 :(得分:1)

Venue has_many功能,所以你必须遍历集合,而不是模型之间存在单一关系的belongs_to

<% venue.features.each do |feature| %>
  <%= debug feature %>
<% end %>