我在Postgres sql的生产中遇到了一个问题,它有一个不同的限制顺序。看看类似的问题,我似乎没有找到冲突的明确顺序。
我按日期desc显示当前用户订单的所有报告。然后我创建了过滤器,以便用户可以过滤报表中的特定属性。在过滤器中选择我使用DISTINCT仅显示uniq值。以下两个属性“target_species”和“tide”正在创建
是冲突,因为我按日期DESC显示所有报告,然后在过滤器中单独使用DISTINCT?
reports_controller.rb
def index
@reports = current_user.reports.order("date DESC")
@reports_for_filter = @reports.select("DISTINCT(target_species)")
@reports_for_filter_tide = @reports.select("DISTINCT(tide)")
end
def filter
@target_species = params[:target_species] unless params[:target_species].blank?
@tide = params[:tide] unless params[:tide].blank?
# for uniq
@reports = current_user.reports.order("date DESC")
@reports_for_filter = @reports.select("DISTINCT(target_species)") #sets up target_species for filter box
@reports_for_filter_tide = @reports.select("DISTINCT(tide)")
@reports = @reports.selected_species(@target_species) if @target_species
@reports = @reports.selected_tide(@tide) if @tide
end
报告视图 index.html.erb
<div class="col-sm-3">
<label>Species</label><br>
<select id="target_species" name="target_species" class="form-control m-b">
<option value="">Select Species</option>
<% @reports_for_filter.each do |report| %>
<% puts "target species is #{report.target_species}".green %>
<option value="<%= report.target_species %>"><%= report.target_species %>
</option>
<% end %>
</select>
</div>
<div class="col-sm-3">
<label>Tide</label><br>
<select id="tide" name="tide" class="form-control m-b">
<option value="">Select Tide</option>
<% @reports_for_filter_tide.each do |report| %>
<option value="<%= report.tide %>" <%= selected_tide(report.tide) %>><%= report.tide %>
</option>
<% end %>
</select>
</div>
<script>
$('#target_species').change(function(){
$('#filter_form').submit();
});
$('#tide').change(function(){
$('#filter_form').submit();
});
</script>
report.rb
belongs_to:location belongs_to:user
scope :selected_species, -> (the_species) { where(target_species: the_species)}
scope :selected_tide, -> (the_tide) {where(tide: the_tide)}