Попробуйте это:
class Room < ActiveRecord::Base
belongs_to :province
belongs_to :city
belongs_to :region
belongs_to :street
belongs_to :estate
def self.search(city_id, region_id, layout, page)
conditions = []
conditions.push("city_id = #{city_id}")
conditions.push("region_id = #{region_id}")
conditions.push("layout = #{layout}") if layout!=0
paginate :per_page => 5, :page => page,
:conditions => conditions.join(' and ')
end
end
Это объединит все ваши условия с "И".
Причина, по которой ваш код не работает, заключается в том, что при использовании массива для условия первым элементом должно быть условие с параметрами SQL, а остальные элементы - значениями параметров. Например:
Room.paginate(:conditions => ['city_id = ? and region_id = ?', city_id, region_id])
Вот почему он учитывает только первое условие.