Ruby в базе данных Rails с Ruby переменной - PullRequest
0 голосов
/ 13 января 2020

Это текущий код для моего запроса ..

<% property_id = params[:property] %>
<%= property_name = Hotel.find_by_sql('
        SELECT name 
        FROM hotels
    ') %>

Я хочу добавить что-то вроде

WHERE hotel_id == property_id

Но все, что я пытаюсь сделать, похоже, не работает из-за части "property_id". Я пытался объединить, разные назначения, и т. Д. c. Я чувствую себя глупо SOS. Спасибо заранее.

Кроме того, когда я добавляю ..

WHERE hotel_id == "hotelid1"

Какой "hotelid1" является существующим hotel_id в таблице. Это работает, но не так, как я себе представляю. Возвращается ..

"[#Hotel id: nil, name: "HotelOne">]"

Я хочу, чтобы он выводил только название отеля. В этом случае HotelOne .

Ответы [ 3 ]

1 голос
/ 13 января 2020

ActiveRecord where должно быть достаточно для вас.

property_names = Hotel.where(hotel_id: params[:property]).pluck(:name)

И очень сложно иметь hotel_id в Hotel модели, поскольку это противоречит атрибуту id по умолчанию. В любом случае, надеюсь, что это было полезно для вас.

Примечание: Если hotel_id уникален в вашей таблице, то лучше go с комментарием @ SebastianPalma в вашем вопросе.

0 голосов
/ 13 января 2020

Попробуйте следующую строку: -

<% property_name = ActiveRecord::Base.connection.execute("SELECT name FROM hotels WHERE hotel_id=#{property_id}").first["name"] %>
0 голосов
/ 13 января 2020

Я думаю, что вы ищете это.

<%= property_name = Hotel.find_by_sql("SELECT name FROM hotels WHERE hotel_id=#{ruby_variable}") %>

...