Если params[:tag]
установлено на foo
, метод find
генерирует этот запрос:
select * from supplies where 'foo' is not null and 'foo' != '' order by name;
Это возвращает все ваши Supply
записи, потому что оба условия всегда выполняются.
'foo' is not null
'foo' != ''
Конечно, вы хотите, чтобы params[:tag]
было именем столбца, но это просто ужасный дизайн.
В вашей модели Supply
должен быть атрибут tag
и использовать следующий искатель:
@supplies = Supply.all(:conditions => ["tag = ?", params[:tag]], :order => "name")
Если вы действительно хотите, чтобы у расходных материалов была опция для нескольких тегов, используйте:
class Supply < ActiveRecord::Base
has_and_belongs_to_many :tags
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :supplies
end
@supplies = Supplies.all(:conditions => {:tags => ['foo', 'bar']}, :order => "name")