0

Rails に 3 つのモデル A、B、C があり、それぞれに独自のコントローラーがあるとします。

モデルA

has_many :b

モデル B には属性 :a_id および :c_id (B および A への外部キー) があります。

所属先:a
所属先:c

:item1、:item2 などの属性を持つモデル C。

has_many :b

特定の a_id でフィルター処理されたモデル C のアイテムのリストを表示したいと考えています。さまざまな理由から、モデル C で b_id 外部キーを持ちたくないのですが、これを実現する最善の方法は何ですか? 配列を考えましたが、複雑なようです。もっと簡単な方法があると確信しています。

ありがとう

4

3 に答える 3

0

提案をありがとう、私は私が持っている他の依存関係のためにモデルの関連付けを台無しにしたくなかったので、私は摘み取りを含む解決策を思いつきました。

私はこのようなものを使用しました:

@pluckfromModelC = ModelB.where("attribute_I_want_mapping =?", @attribute_to_map_from).uniq.pluck(:item_id)

配列を生成しました。

私の見解では、ループを作成しました

<% @pluckfromModelC.each do |x| %>

    <% @founditem = Item.find(x) %>
    <%= @founditem.description %>
     ...etc.

<% end %>
于 2012-10-26T10:34:29.997 に答える
0

このように関係を与えてみてください

Model A
  has_and_belongs_to_many :c

Model C
  has_and_belongs_to_many :a

Model B
  belongs_to :a
  belongs_to :c

このようにデータを取得するには、コンソールで試してください

# a = user, c = customer
@user.customers # you get all customers for particular user
@customer.users # you get all users for particular customer

HATBMでもっと見る

于 2012-10-26T07:25:00.777 に答える
0

これを試してください:

C.find(:all, :joins => [:B], :conditions => ["a_id = ", id_of_a])
于 2012-10-26T08:30:46.693 に答える