Ruby on rails 布尔字段,指示记录与给定字段值具有归属关联

Ruby on rails 布尔字段,指示记录与给定字段值具有归属关联,ruby-on-rails,ruby,sqlite,activerecord,rails-activerecord,Ruby On Rails,Ruby,Sqlite,Activerecord,Rails Activerecord,我的模型: 类CountryVisit

我的模型:

类CountryVisit Country.foruser

以下是我的不完整解决方案:如果我尝试执行,将引发ActiveRecord::StatementInvalid:SQLite3::SQLException。计算结果:

def self.foruser\u id 国 .选择Countries.*,访问的国家/地区id .加入 左外联合国访问 country\u visions.country\u id=countries.code 和国家/地区访问。用户id={user\u id} 终止 预期行为:

user=user.create 进行国别访问 c1=国家/地区。创建 cv1=CountryVisit.createcountry:c1,用户:用户 没有国家访问 c2=国家/地区。创建 结果应该是:

countries=Country.foruser\u id.order'created\u at asc' countries.first.visted=>true countries.last.visted=>false
实际上,这个问题很简单。如果查看完整错误:

ActiveRecord::StatementInvalid: SQLite3::SQLException: unrecognized token:
"#": SELECT countries.*, country_visits.id AS visited FROM "countries" LEFT 
OUTER JOIN country_visits ON country_visits.country_id = countries.id AND 
country_visits.user_id = #<User:0x007fcb357a5ed8>  ORDER BY created_at asc

我不明白你想从这个查询中得到什么结果?@Fenec My bad。已更新问题,预期行为错误。在示例中,这是一个输入错误。无论如何,这都不是一个解决方案,应该removed@IvanDenisov然后改变你的问题,因为现在这是你所描述的唯一有效的东西;
def self.for(user) # <-- user
  Country
    .select("countries.*, country_visits.id AS visited")
    .joins(
      "LEFT OUTER JOIN country_visits ON 
      country_visits.country_id = countries.code 
      AND country_visits.user_id = #{user.id}"   # <-- user.id
    )
end