我可以从续集模型中执行连接吗?

时间:2017-05-02 19:32:06

标签: ruby join orm sequel

我正在使用Sequel库进行个人项目,而且我在加入时遇到了麻烦。我需要检索由城市+社区组成的客户的完整地址。地址在两个表/模型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)时,关系正常运作。但是相同的连接并没有适用于我的模型。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

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

例如,在Customer课程中,您可以访问城市和社区:

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

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

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