Rails where子句中的多对多

时间:2013-08-25 19:00:49

标签: ruby-on-rails ruby ruby-on-rails-3

我有两个多对多的模型和另一个

Storetypes:

class Storetype < ActiveRecord::Base
  has_and_belongs_to_many :stores
end

商户:

class Store < ActiveRecord::Base
  belongs_to :group  
  has_many :products
end

组:

class Group < ActiveRecord::Base
  has_many :stores
  has_many :storetypes
end

我需要做一个查询,我在商店类型上获得所有商店,即时通讯做这样的事情:

@storetype_id = Storetype.first
@stores = @group.stores.where(@storetype_id => @group.stores)

有什么想法吗?

编辑

我需要的输出是属于某种商店类型的所有商店

1 个答案:

答案 0 :(得分:1)

我会指出这里几个问题。

当您说Storetype.first时,我认为您的意思是@storetype.first。你混淆了这个类和类的实例。 所以说我这样做:

@storetype = Storetype.first

我正在创建类Storetype的实例,这是您的模型。来找我?

所以回答你的问题,一旦我有了一个实例,我现在可以简单地运行

@storetype.stores 

到该商店类型的所有商店。看看我如何走向你的方法?我也根本不需要使用storetype的id。更简单,更清洁。

对于关系的其他部分,要获取商店的所有商店类型,您只需运行(使用Store的实例)

@store.storetypes