我可以从 sequel 模型执行连接吗?

Can I execute a join from a sequel Model?

我正在将 Sequel 库用于个人项目,但我在连接方面遇到了问题。我需要检索由城市+社区组成的客户的完整地址。地址在两个 tables/models、NeighborhoodCity 之间中断。

基本上我有以下型号:

我的客户模型是这样的:

class Customer < Sequel::Model
  many_to_one :city
  many_to_one :neighborhood

  def complete_address
    city = join(:city).select(:city__name)
    neighborhood = join(:neighborhood).select(:neighborhood__name)

    "#{city} - #{neighborhood}"
  end
end

class City
  one_to_many :customers
end

class Neighborhood
  one_to_many :customers
end

Customer.join(:city)Customer.join(:neighborhood) 这样的关系在加入时工作正常。但是相同的连接不适用于我的模型。

我做错了什么?

由于您已经定义了关联(one_to_manymany_to_one),因此您可以按名称引用它们。

例如,在您的 Customer class 中,您可以到达以下城市和社区:

def complete_address
  "#{city.name} - #{neighborhood.name}"
end

Sequel 根据您的关系名称创建引用,您可以使用点符号引用这些 _to_one 关联中的字段。

https://github.com/jeremyevans/sequel/blob/master/doc/association_basics.rdoc#methods-added