我有一个问题:
@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
答案 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提醒我。