Rails 3 ActiveRecord:通过查找关联来查找模型

发布于 2024-11-04 22:35:04 字数 440 浏览 0 评论 0原文

class OrderItem belongs_to Item and belongs_to Order

class Item has_many OrderItems and belongs_to ItemType

class ItemType has_many Items

class Order has_many OrderItems

我想在 Order 中找到其 ItemType 类型的所有 OrderItems

def get_by_item_type(id)
  order_items.where(:item => {:item_type_id => 3})

显然,我可以通过查找所有 OrderItems、循环、测试和构建我自己的集合来做到这一点。没问题,但我想知道是否还有其他方法?

谢谢 /j

class OrderItem belongs_to Item and belongs_to Order

class Item has_many OrderItems and belongs_to ItemType

class ItemType has_many Items

class Order has_many OrderItems

I would like to, within Order, find all OrderItems whose Items are of type ItemType

def get_by_item_type(id)
  order_items.where(:item => {:item_type_id => 3})

Obviously I can do this by finding all OrderItems, looping, testing, and building my own collection. No problem there, but I wonder if there is another way?

Thanks
/j

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

没有心的人 2024-11-11 22:35:04

这可以通过以下方式完成:

def get_by_item_type(id)
  order_items.joins(:item).where(:item_type_id => id)
end

如果您收到有关不存在/不明确列的错误,请查看

order_items.joins(:items).to_sql

以找到正确的列名称。

This would be done with:

def get_by_item_type(id)
  order_items.joins(:item).where(:item_type_id => id)
end

If you get an error about a non existing/ambiguous column, have a look at

order_items.joins(:items).to_sql

in order to find the correct column names.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文