Implement state search with new model
This commit is contained in:
@@ -5,7 +5,7 @@ module Api::V1
|
|||||||
def index
|
def index
|
||||||
parks = Park.all
|
parks = Park.all
|
||||||
if params[:state].present?
|
if params[:state].present?
|
||||||
parks = parks.where("states like '%' || ? || '%'", params[:state])
|
parks = parks.joins(:states).where(parks_by_states: { state: params[:state] })
|
||||||
end
|
end
|
||||||
render json: {
|
render json: {
|
||||||
total: parks.count,
|
total: parks.count,
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
class Park < ApplicationRecord
|
class Park < ApplicationRecord
|
||||||
has_many :alerts, foreign_key: :park_code, primary_key: :code,
|
has_many :alerts, foreign_key: :park_code, primary_key: :code,
|
||||||
inverse_of: :park, dependent: :destroy
|
inverse_of: :park, dependent: :destroy
|
||||||
|
has_many :states, class_name: "ParksByState",
|
||||||
|
foreign_key: :park_code, primary_key: :code,
|
||||||
|
inverse_of: :parks, dependent: :destroy
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,2 +1,4 @@
|
|||||||
class ParksByState < ApplicationRecord
|
class ParksByState < ApplicationRecord
|
||||||
|
has_many :parks, foreign_key: :park_code, primary_key: :code,
|
||||||
|
inverse_of: :states
|
||||||
end
|
end
|
||||||
|
|||||||
9
spec/fixtures/parks_by_states.yml
vendored
Normal file
9
spec/fixtures/parks_by_states.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
park_code: crla
|
||||||
|
state: OR
|
||||||
|
|
||||||
|
two:
|
||||||
|
park_code: olym
|
||||||
|
state: WA
|
||||||
Reference in New Issue
Block a user