Ruby on rails 如何获得具有不同where标准的多个关系
我有以下标题和项目类,希望获取所有仅为is_deleted=false的项目,并忽略is_enabled(或者获取true/false,因为is_enabled是一个布尔值): 但这似乎不起作用——也许只是一个语法问题 获取项目已启用状态的最佳方法是什么?我是否可以筛选我的项目,以确定是否启用了true或false?可能只是一种类似的方法,但最好将其作为关系的一部分:Ruby on rails 如何获得具有不同where标准的多个关系,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有以下标题和项目类,希望获取所有仅为is_deleted=false的项目,并忽略is_enabled(或者获取true/false,因为is_enabled是一个布尔值): 但这似乎不起作用——也许只是一个语法问题 获取项目已启用状态的最佳方法是什么?我是否可以筛选我的项目,以确定是否启用了true或false?可能只是一种类似的方法,但最好将其作为关系的一部分: class Header < ActiveRecord::Base ... def all_items Item.wh
class Header < ActiveRecord::Base
...
def all_items
Item.where('header_id=? and is_deleted=false',self.id)
end
class头
thx对于任何帮助一个选项可以通过使用范围:
class Header < ActiveRecord::Base
scope :deleted, joins(:items) & Item.deleted
scope :enabled, joins(:items) & Item.enabled
## Other way to write the same thing:
#scope :enabled, joins(:items).merge(Item.enabled)
end
class Item < ActiveRecord::Base
scope :deleted, lambda { where("is_deleted=false") }
scope :enabled, lambda { where("is_enabled=true ") }
end
使用此选项,您可以通过以下方式获得结果:@header.deleted.items
看看,你可能会得到更合适的想法
class Header < ActiveRecord::Base
...
def all_items
Item.where('header_id=? and is_deleted=false',self.id)
end
class Header < ActiveRecord::Base
scope :deleted, joins(:items) & Item.deleted
scope :enabled, joins(:items) & Item.enabled
## Other way to write the same thing:
#scope :enabled, joins(:items).merge(Item.enabled)
end
class Item < ActiveRecord::Base
scope :deleted, lambda { where("is_deleted=false") }
scope :enabled, lambda { where("is_enabled=true ") }
end
class Header < ActiveRecord::Base
has_many :items, :order => 'position'
...
def deleted
where('items.is_deleted=false')
end