您好我遇到问题请帮帮我
def messaging
user = User.friendly.find(params[:id])
@owner = user.owner
authorize @owner
if params[:renter_id].to_i == 0
@renter = User.friendly.find(params[:renter_id]).renter
else
@renter = Renter.find(params[:renter_id])
end
@messages = @owner.messages.where(renter_id: @renter.id).order(created_at: :desc)
@last_property = Property.find(@messages.first.property_id)
mark_read(@renter.id)
end
这里的@messages
我正在接收来自后端的查询
SELECT "messages".* FROM "messages" WHERE "messages"."owner_id" = $1 AND "messages"."renter_id" = 2 ORDER BY "messages"."created_at" DESC [["owner_id", 1]]
这里owner_id
取1美元而不是1,为什么?
另外请向我解释授权。
答案 0 :(得分:1)
它是PostgreSQL驱动程序中的编号占位符,它正常工作
实施例: PostgreSQL驱动程序希望看到编号的占位符($ 1,$ 2,...)不是问号,你需要为准备好的语句命名:
的ActiveRecord :: Base.connection.raw_connection.prepare(' some_name&#39 ;, " DELETE FROM my_table WHERE id = $ 1")