我正在使用Sequel库进行个人项目,而且我在加入时遇到了麻烦。我需要检索由城市+社区组成的客户的完整地址。地址在两个表/模型Neighborhood
和City
之间中断。
基本上,我有以下型号:
我的客户模型是这样的:
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)
时,关系正常运作。但是相同的连接并没有适用于我的模型。
我做错了什么?
答案 0 :(得分:4)
由于您已经定义了关联(one_to_many
,many_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