是否可以将变量放入我的查询中?

时间:2016-05-17 12:11:35

标签: ruby-on-rails ruby database postgresql activerecord

我使用Ruby On Rails中的一些ActiveRecord获得了postgresql查询

my_table.location = ActiveRecord::Base.connection.execute("UPDATE my_table SET location = ST_SetSRID(ST_MakePoint(my_table.longitude, my_table.latitude), 4326)::geography")

我想将变量放入我的查询中,因为我不想使用数据库中的列经度和纬度,而是使用包含经度和纬度值的一些变量。

my_table.location = ActiveRecord::Base.connection.execute("UPDATE my_table SET location = ST_SetSRID(ST_MakePoint((?), (?), 4326)::geography"), longitude, latitude)

我找不到让它发挥作用的方法,但你应该理解背后的想法。是否存在一些在我的查询中使用变量的方法?

2 个答案:

答案 0 :(得分:0)

是的,你可以这是我的一个查询的例子,我在我的SQL查询中使用了用户变量

 @from_date = Time.parse(@from).to_date.beginning_of_day
    @till_date = Time.parse(@to).to_date.end_of_day


 sql = "select abc.sss,im.lat,
 im.long from  users as rq JOIN  images as 
 im ON rq.id= im.imageable_id where  rq.created_at  
  BETWEEN '#{@from_date}' AND '#{@till_date}' ;" 



  response = ActiveRecord::Base.connection.execute(sql)

答案 1 :(得分:0)

这是针对您的用例的解决方案,我认为需要检查@IndexedEmbedded @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinTable(name = "data_tags", joinColumns = @JoinColumn(name = "data_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "tag_id", referencedColumnName = "id")) private List<TagEntity> tags;

longitude.present? and latitude.present?