Как вы делаете запрос на основе определенного значения в дочерней таблице, используя datamapper - PullRequest
2 голосов
/ 12 ноября 2011
create table foo  (id, name)
create table foo_config (id, foo_id, key, value)

insert into foo (1, 'name1')
insert into foo (2, 'name2')
insert into foo (3, 'name3')

insert into foo_config (1, 1, 'key1', 'val1')
insert into foo_config (2, 1, 'key2', 'val2')
insert into foo_config (3, 1, 'key3', 'val3')
insert into foo_config (4, 2, 'key1', 'val1')
insert into foo_config (5, 3, 'key2', 'val2')

Как запросить все foo, чьи key1 = 'val1', в нашем случае foo: 1 и foo: 2 будут перечислены здесь. Как мне модель / запрос для этого, цените любые указатели на то же самое.

1 Ответ

0 голосов
/ 10 февраля 2012

Сначала вы должны построить модели и установить ассоциации:

class Foo < ActiveRecord::Base
  has_many :foo_configs, :dependent => :destroy
end

class FooConfig < ActiveRecord::Base
  belongs_to :foo
end

А вот как вы бы настроили запрос:

Foo.where(:foo_configs => {:key => 'key1', :value => 'value1'}).includes(:foo_configs)
...