3
モデルへの参加を支援し、正常に動作し:ActiveRecordの検索方法は?私は2つのモデルがすでに作成されてい
class Track < ActiveRecord::Base
has_many :grand_prixes
end
class GrandPrix < ActiveRecord::Base
belongs_to :track
end
私のデータベーススキーマは次のとおりです。
create_table "tracks", force: :cascade do |t|
t.string "track_name"
t.string "description"
t.string "country"
t.string "lenght"
t.integer "pit_boxes"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "ac_track_name"
end
add_index "tracks", ["ac_track_name"], name: "index_tracks_on_ac_track_name"
create_table "grand_prixes", force: :cascade do |t|
t.datetime "gp_date"
t.integer "max_slots"
t.integer "event_id"
t.integer "track_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "grand_prixes", ["track_id"], name: "index_grand_prixes_on_track_id"
私はでトラックに関連付けられているグランプリを見つけることができますすることができていますIDが、私は以前、トラックの名前で検索トラック(別のサイトから来ている変数)のIDによってテーブルにグランプリを見つけたい:
GrandPrix.where (track_id: 2)
これは動作し、私が望むGPを返しました。
私は名前で検索する:
GrandPrix.where (Track.name = "thenameIwant")
、私のIDを返すために:
SELECT id FROM WHERE tracks tracks.name LIKE 'thenameIwant';
そして、それはこのようなものになるだろう:joins
キーワードを使用し
GrandPrix.where (Track.id = SELECT id FROM WHERE tracks tracks.name LIKE 'thenameIwant')
働いてしまっているので、:トラック).where(トラック:{ac_track_name: "spa"}) ' – Nikos4Life