小编Sin*_*ble的帖子

Rails协会不是EXISTS.更好的方法?

使用Rails 3.2.9
我试图获取与没有所有者的组织关联的项目列表.

我能够使用下面的数据列表,但对我来说似乎很难看.有一个更好的方法吗?

Items.all(:select => "items.id, items.name",
  :joins => "INNER JOIN organizations on items.organization_id = organizations.id",
  :conditions => "NOT EXISTS (select * from items k JOIN items_owners on items.id = items_owners.item_id) and items.organization_id = 1")
Run Code Online (Sandbox Code Playgroud)

表设置:
所有者:

  • ID
  • 名称

项目:

  • ID
  • 名称
  • 的organization_ID

items_owners:

  • owner_id
  • ITEM_ID

组织:

  • ID
  • 项目清单

楷模:

class Organization < ActiveRecord::Base
   attr_accessible :name

   has_many :items
end

class Item < ActiveRecord::Base
   attr_accessible :description, :name, :owner_ids, :organization_id

   has_many :items_owner
   has_many :owners, :through => :items_owner
   belongs_to :organization
end

class …
Run Code Online (Sandbox Code Playgroud)

sqlite ruby-on-rails ruby-on-rails-3.2

7
推荐指数
2
解决办法
9783
查看次数

标签 统计

ruby-on-rails ×1

ruby-on-rails-3.2 ×1

sqlite ×1