2011-07-02 4 views
0

私は2つのテーブル:Members and Addressesを持っています。モデル内でこれらの2つのテーブルをマージして、すべての列を結合することはできますか?たとえば、Membersにはpositionという名前の列があり、Addressesにはstreetという名前の列があります。どのように私はそれが同じ仮想テーブル内の位置とアドレスを持つことができるようにすることができます。このためのマージ関数はありますか?Railsマージテーブル

答えて

0

わからないあなたは別のモデルを作成する必要がある理由、あなたは基本的なRubyはこのために構築し使用することができます:私はMemberaddress_idと呼ばれる列を持っていると仮定します

、それはメンバーbelongs_toAddressです。これにより自動的に結合が関連付けられます。

だから、あなたがする必要があるのは、このようなものです:あなたはアドレスとちょうど位置フィールドを取得したい場合は、行く

class Address < ActiveRecord::Base 
end 

class Member < ActiveRecord::Base 
    belongs_to :address 
end 

member = Member.create(:address => Address.find(123)) 

member = Member.find(456) 
position = member.address.position 

または多分:

Member.joins(:address).select("members.position, addresses.street") 

あなたがしようとしていることがわかりませんが、それが非常に具体的なものである場合は、データベースで表示し、そのモデルを作成して、それを通常の表のように扱います。

+0

基本的に、私のサイトの注文フォームに記入されている場合は、ビジネスの住所と事業所の各メンバーの住所を記入する必要があります。私がこのようにしたら多少冗長になるだろうと思っていました...今は悪い練習をしているだけですか? – Jake

+0

もしあなたがRailsでやっているのであれば、あなたはRailsがやりたいとは思わないでしょう。私は最も簡単な方法で行くだろう。あなたが実際に望むものは、has_and_belongs_to_manyまたはhas_many:through関係です。私はあなたが達成しようとしていることをまだ100%確信していません。 – Dex