关于关系的Postgres查询

时间:2016-06-24 18:26:52

标签: ruby postgresql ruby-on-rails-4

我有一个问题:

@profiles = Profile.where('whatami LIKE ? AND expectedsalaray <= ?', '%' + @job.title + '%', @job.salary)

个人资料与另一个名为城市profile.cites的模型相关联 如何在where语句中检查此关联模型?

如下所示:

Profile.where('profiles.city LIKE ?', @job.city)

以下是我的协会:

class City < ActiveRecord::Base
  has_and_belongs_to_many :profiles
end

class Profile < ActiveRecord::Base
  has_and_belongs_to_many :cities
end

1 个答案:

答案 0 :(得分:1)

我会假设你的模特已经正确宣布了他们的关联,我会采取行动解决这个问题。

class Profile
  belongs_to :city
end

class City
  has_many :profiles
end

@profiles = Profile.where('whatami ILIKE ? AND expectedsalaray <= ? AND
cities.name ILIKE ?', "%#{@job.title}%", @job.salary, "%#{@job.city}%").joins(:city)

.joins()会在您的SQL / Postgres中添加一个左连接,允许您从连接表中引用列。

我已经为你喜欢的通配符添加了插值,使其比所有加号更短。

使用ILIKE代替LIKE有助于防止与区分大小写相关的问题。感谢@Shayna提醒我。