ruby-on-rails - Rails 3 ActiveRecord : Find model by finding it's association

标签 ruby-on-rails activerecord associations

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 中找到其 Items 类型为 ItemType 的所有 OrderItems
def get_by_item_type(id)
  order_items.where(:item => {:item_type_id => 3})

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

谢谢
/j

最佳答案

这将通过以下方式完成:

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

如果您收到有关不存在/不明确的列的错误,请查看
order_items.joins(:items).to_sql

为了找到正确的列名。

关于ruby-on-rails - Rails 3 ActiveRecord : Find model by finding it's association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5869252/

相关文章:

javascript - 用 jQuery 实现 Prototype 风格的类结构

ruby-on-rails - 渴望加载关联但限制返回

ruby-on-rails - Rails 4 find_or_create_by_name

java - 理解代码中的 UML 关联

ruby-on-rails - Rails Restful 下载

ruby-on-rails - 运行 rake db :create in test environment 时,字符串无法强制转换为整数

php - codeigniter 事件记录不返回预期结果

ruby-on-rails - 事件记录 :has_many associations and === operator

performance - 使用 Doctrine 2.1 EXTRA_LAZY 关联加快分页

ruby-on-rails - 迁移 DB Rails 时出错