2017-05-02 9 views
2

私はSequelライブラリを個人用プロジェクトに使用しています。私は特に結合に問題があります。私は都市+近所で構成される顧客の完全な住所を取得する必要があります。 2つの表/モデルの間でアドレスが壊れています(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)のように結合します。しかし、同じ結合が私のモデルには作用していません。

私は間違っていますか?

答えて

4

アソシエーション(one_to_manymany_to_one)を既に定義しているので、名前で参照することができます。あなたのCustomerクラスで例えば

、あなたは都市として、近所で取得することができます:続編は、あなたの関係名に基づいて参照を作成し、あなたがドット表記でこれら_to_one団体内のフィールドを参照することができ

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

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

関連する問題