Ruby Rails 值(按关联)
Ruby on Rails value by association
我有这个自由形式 SQL 当 运行 returns 产品名称、关联属性的名称和该属性的值时。我想要解决的是如何在 Rails 和 Active Record
上使用 with Ruby
自由格式查询
select menu_items.name, menu_attributes.name, menu_attributes_items.menu_attribute_value from menu_attributes, menu_items, menu_attributes_items, venues
where menu_items.id = menu_attributes_items.menu_item_id
and menu_attributes.id = menu_attributes_items.menu_attribute_id
and venues.id = menu_attributes_items.venue_id
and menu_attributes.name = 'Price'
这是我当前的 HAMl 模板,尽管它只是 returns 属性列表,即价格、尺寸,而不是像 SQL 那样的值
- for item in @venue.menu_items
.grid-content
.card
= image_tag("drinks/#{item.name.titlecase.tr(' ','-')}.png")
%img{:src => "http://placehold.it/400x200?text=Coffee"}
.card-divider
= item.name
.card-section
%h4
- for attr in item.menu_attributes
= attr.name
= MenuItem.joins({ menu_attributes: :menu_attributes_items }, :venues).where('menu_items.id = menu_attributes_items.menu_item_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND venues.id = menu_attributes_items.venue_id AND menu_attributes.name = ?', 'Price').select('menu_items.name, menu_attributes.name, menu_attributes_items.menu_attribute_value')
更新
价格#尺码#尺码#
根据您的模型之间的关联,并且仍然有一点 SQL,您的查询可以用 ActiveRecord 这样写:
MenuItem.joins({ menu_attributes: :menu_attributes_items }, :venues)
.where('menu_items.id = menu_attributes_items.menu_item_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND venues.id = menu_attributes_items.venue_id AND menu_attributes.name = ?', 'Price')
.select('menu_items.name, menu_attributes.name, menu_attributes_items.menu_attribute_value')
我有这个自由形式 SQL 当 运行 returns 产品名称、关联属性的名称和该属性的值时。我想要解决的是如何在 Rails 和 Active Record
上使用 with Ruby自由格式查询
select menu_items.name, menu_attributes.name, menu_attributes_items.menu_attribute_value from menu_attributes, menu_items, menu_attributes_items, venues
where menu_items.id = menu_attributes_items.menu_item_id
and menu_attributes.id = menu_attributes_items.menu_attribute_id
and venues.id = menu_attributes_items.venue_id
and menu_attributes.name = 'Price'
这是我当前的 HAMl 模板,尽管它只是 returns 属性列表,即价格、尺寸,而不是像 SQL 那样的值
- for item in @venue.menu_items
.grid-content
.card
= image_tag("drinks/#{item.name.titlecase.tr(' ','-')}.png")
%img{:src => "http://placehold.it/400x200?text=Coffee"}
.card-divider
= item.name
.card-section
%h4
- for attr in item.menu_attributes
= attr.name
= MenuItem.joins({ menu_attributes: :menu_attributes_items }, :venues).where('menu_items.id = menu_attributes_items.menu_item_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND venues.id = menu_attributes_items.venue_id AND menu_attributes.name = ?', 'Price').select('menu_items.name, menu_attributes.name, menu_attributes_items.menu_attribute_value')
更新 价格#尺码#尺码#
根据您的模型之间的关联,并且仍然有一点 SQL,您的查询可以用 ActiveRecord 这样写:
MenuItem.joins({ menu_attributes: :menu_attributes_items }, :venues)
.where('menu_items.id = menu_attributes_items.menu_item_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND menu_attributes.id = menu_attributes_items.menu_attribute_id AND venues.id = menu_attributes_items.venue_id AND menu_attributes.name = ?', 'Price')
.select('menu_items.name, menu_attributes.name, menu_attributes_items.menu_attribute_value')