Rails 3 ActiveRecord Query Вопрос -- ruby-on-rails поле с участием ruby-on-rails-3 поле с участием activerecord пол Связанный проблема

Rails 3 ActiveRecord query question


0
vote

проблема

русский

У меня есть модель <код> X что <код> belongs_to :y и имеет поле <код> quantity

<код> Y Модель:

 <код> has_many :xs belongs_to :user belongs_to :z   

<Код> User Модель:

 <код> has_many :ys has_many :xs, :through => :ys   

<Код> Z Модель

 <код> has_many :ys has_many :users, :through => :ys   

Как я могу найти, сколько <код> xs пользователю имеет определенный <код> belongs_to :y0 ? Как я могу найти сумму поля количества для <код> belongs_to :y1 , что пользователь имеет для определенного <код> belongs_to :y2 ?

Я хотел бы найти решение, которое использует синтаксис активных рекордов Rails 3, и проходит на уровне базы данных как можно больше, пожалуйста. Я был бы признателен за любую помощь.

Английский оригинал

I have a model X that belongs_to :y and has a field quantity

The Y model:

has_many :xs belongs_to :user belongs_to :z 

The User model:

has_many :ys has_many :xs, :through => :ys 

The Z model

has_many :ys has_many :users, :through => :ys 

How can I find how many xs a user has for a particular z? How can I find the sum the quantity fields for the xs that a user has for a particular z?

I would like to find a solution that uses rails 3's active record query syntax and takes place at the database level as much as possible please. I'd appreciate any help.

</div
        
 
 

Список ответов

0
 
vote

Позвольте мне попробовать перевести это в другую моду.

Модель X становится предметом корзины

 <код> catch1  

Модель Y становится телегой

 <код> catch2  

Модель пользователя остается прежним

 <код> catch3  

модель z становится секцией

 <код> catch4  

Поэтому вы спросили:

    .
  • Как я могу найти, сколько элементов корзины пользователь имеет для определенного раздела?
  • Как я могу найти сумму количественные поля для предметов корзины, которые пользователь имеет для Особый раздел?

Добавьте следующую область в Cartitem

 <код> catch5  

и ответы будут

    .
  • user.cart_items.for_section (раздел) .count
  • user.cart_items.for_section (раздел) .sum («Количество»)

Эти команды будут генерировать точный запрос SQL, чтобы найти ответы, которые вы ищете!

 

Let me try to translate this in another fashion.

The X model becomes a Cart Item

class CartItem   belongs_to :cart   attr_accessor :quantity end 

The Y model becomes a Cart

class Cart   has_many :cart_items   belongs_to :user   belongs_to :section end 

The User model stays the same

class User   has_many :carts   has_many :cart_items, :through => :carts end 

The Z model becomes a Section

class Section   has_many :carts   has_many :users, :through => :carts end 

Therefore, you asked:

  • How can I find how many cart items a user has for a particular section?
  • How can I find the sum the quantity fields for the cart items that a user has for a particular section?

Add the following scope to CartItem

scope :for_section, lambda { |section|   includes(:cart).where('carts.section_id = ?', section.id) } 

And the answers will be

  • user.cart_items.for_section(section).count
  • user.cart_items.for_section(section).sum('quantity')

These commands will generate the exact SQL query to find the answers you're looking for!

</div
 
 

Связанный проблема

10  Какой правильный способ запуска одного контроллера действия от другого действия контроллера без перенаправления HTTP?  ( Whats the correct way to run one controller action from another controller acti ) 
Я хотел бы иметь возможность отправлять из одного контроллера на другой условно, на основе комбинации параметров запросов и данных в базе данных. Что я имею...

1  FXCOP / STYLECOP Equivalent для Ruby на рельсах?  ( Fxcop stylecop equivalent for ruby on rails ) 
Есть ли какие-либо инструменты анализа статического кода для Ruby на рельсах? Я ищу что-то на линии «тесты VS-анализа кода», а также анализ на основе правил, ...

0  Ошибка обновления записи  ( Error updating a record ) 
Я получаю ошибку mysql: #update (ActiveReCord :: authentInvalid) "mysql :: Ошибка: # hy 000got Ошибка 139 из механизма хранения: При попытке обновить те...

4  JSON и CARIONWAVE IPHONE проблема [закрыто]  ( Json and carrierwave iphone problem ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> <Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 ...

0  Rails find_by_sql Не возвращая результаты  ( Rails find by sql not returning results ) 
Так что мой запрос, который я бегу, возвращает массив с идентификатором и ничего больше. Но когда я бегу один и тот же запрос в PSQL, он возвращает правильные...

3  Как сделать одинаковую страницу 404 для всех неизвестных запросов, включая изображения, в Rails 3.2, не указав каждый формат файла индивидуально?  ( How to render the same 404 page for all unknown requests including images in r ) 
Мы используем следующий путь в маршрутах в маршрутах .rb на 404S: <код> # Catches all 404 errors and redirects match '*url' => 'default#error_404' Но эт...

1  Логические ценности не "читают" в рельсах  ( Boolean values not being read in rails ) 
Я импортировал некоторые значения из Excel, используя ROO на логические поля в моем приложении Rails. В консоль рельсов Похоже, что все работает нормально, ...

0  Ruby On Rails - Включение клиента скачать видео  ( Ruby on rails enabling client to download videos ) 
Требование - у меня есть видео, размещенное на моем сервере, пользователь должен быть в состоянии загрузить файл, нажав на ссылку. Я следую инструкциям, при...

52  В чем разница между использованием .Exists?, И. Представляют? в рубине?  ( What is the difference between using exists and present in ruby ) 
Я хочу убедиться, что я использую их для правильного случая и хотите знать любые тонкости. Кажется, они функционируют одинаково, что нужно проверить, было ли ...

6  Модели Activerecord кэшированы в заставленных граблях?  ( Activerecord models cached in rake tasks ) 
Я знаю, что в Rails 2.3.2 QuickeRecord запросы кэшированы, то есть вы можете увидеть что-то в журнале разработки / производства: <код> CACHE (0.0ms) SELEC...

260  Rails: update_attribute vs update_attributes  ( Rails update attribute vs update attributes ) 
<код> Object.update_attribute(:only_one_field, "Some Value") Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3") Оба из...

0  Маршрутизация поддоменов в рельсах и главном участке  ( Subdomain routing in rails and main site ) 
Я пытаюсь установить следующее: www.domain.com идет на главный сайт (пользователь может зарегистрироваться, информацию о приложении) foo.domain.com отправ...

1  Rails link_to запрос params - выбор в элементе на следующей странице  ( Rails link to query params selecting in item on the next page ) 
прямо сейчас у меня <код> link_to . Похоже на кнопку пользователю. Это кнопка обновления, поэтому он направляет пользователь на страницу планов. Я не только...

6  Готовая загрузка полиморфных ассоциаций в ActiveSerecord  ( Eager loading of polymorphic associations in activerecord ) 
Это мой первый раз, используя Rails, и мне было интересно, если можно загрузить одну полиморфную ассоциацию в одном запросе SQL? Модели и ассоциации между ним...

7  Rails: Размер кеша в файле управления  ( Rails control file store cache size ) 
Документация для кэша на основе файлов в Rails говорит: Обратите внимание, что кеш будет расти, пока не будет заполнен диск, если вы не Периодически очищ...

Связанный проблема

10  Какой правильный способ запуска одного контроллера действия от другого действия контроллера без перенаправления HTTP? 
1  FXCOP / STYLECOP Equivalent для Ruby на рельсах? 
0  Ошибка обновления записи 
4  JSON и CARIONWAVE IPHONE проблема [закрыто] 
0  Rails find_by_sql Не возвращая результаты 
3  Как сделать одинаковую страницу 404 для всех неизвестных запросов, включая изображения, в Rails 3.2, не указав каждый формат файла индивидуально? 
1  Логические ценности не "читают" в рельсах 
0  Ruby On Rails - Включение клиента скачать видео 
52  В чем разница между использованием .Exists?, И. Представляют? в рубине? 
6  Модели Activerecord кэшированы в заставленных граблях? 
260  Rails: update_attribute vs update_attributes 
0  Маршрутизация поддоменов в рельсах и главном участке 
1  Rails link_to запрос params - выбор в элементе на следующей странице 
6  Готовая загрузка полиморфных ассоциаций в ActiveSerecord 
7  Rails: Размер кеша в файле управления