Ruby on rails rails中多模型关联的最佳实现?

Ruby on rails rails中多模型关联的最佳实现?,ruby-on-rails,has-and-belongs-to-many,Ruby On Rails,Has And Belongs To Many,好的,这里有一个轨道,D 看起来有很多:通过是处理多对多关系的最新最好的方式,但我尽量保持简单。希望你们中的一位大师曾经处理过这种情况: 以下是我现在的基本模型设置: class User < ActiveRecord::Base has_and_belongs_to_many :products end class Product < ActiveRecord::Base has_and_belongs_to_many :users has_and_belongs

好的,这里有一个轨道,D

看起来有很多:通过是处理多对多关系的最新最好的方式,但我尽量保持简单。希望你们中的一位大师曾经处理过这种情况:

以下是我现在的基本模型设置:

class User < ActiveRecord::Base
   has_and_belongs_to_many :products
end
class Product < ActiveRecord::Base
   has_and_belongs_to_many :users
   has_and_belongs_to_many :clients
end
class Client < ActiveRecord::Base
   has_and_belongs_to_many :products
end
我在rails方面的noobish经验并没有给我如何最好地构建能够容纳他的客户列表的阵列的经验

我的想法是使用@bob.products获取bob有权访问的产品,然后访问每个产品,并找到与每个产品关联的客户机,然后将它们加入到单个阵列中。但这是最好的办法吗


谢谢

好吧,我通过以下方式实现了我想要的功能:

user = current_user
      @clients_no_access = Client.find(:all, :order => :business_name)
      user.products.each do |product|
        @clients_no_access -= product.clients
      end
      @all_clients = Client.find(:all,
      :order => :business_name) - @clients_no_access - @product.clients

基本上,找到所有客户,然后遍历链接的授权产品并将其从列表中删除,基本上创建一个非授权客户列表。。然后再次执行搜索并清除未授权客户和已分配到组中的客户。。但是,我的胶带用完了。。有更好的解决方案吗?

好吧,我通过以下方式实现了我想要的功能:

user = current_user
      @clients_no_access = Client.find(:all, :order => :business_name)
      user.products.each do |product|
        @clients_no_access -= product.clients
      end
      @all_clients = Client.find(:all,
      :order => :business_name) - @clients_no_access - @product.clients

基本上,找到所有客户,然后遍历链接的授权产品并将其从列表中删除,基本上创建一个非授权客户列表。。然后再次执行搜索并清除未授权客户和已分配到组中的客户。。但是,我的胶带用完了。。有更好的解决方案吗?

不确定这是否是您正在寻找的,但如果您想删除特定用户的所有未授权客户端:

用户=当前用户

@clients\u access=Array.new

user.products.each{| p |@clients_access.push(p.clients.uniq!}


@客户访问。扁平化

不确定这是否是您要查找的,但如果您要删除特定用户的所有未授权客户端:

用户=当前用户

@clients\u access=Array.new

user.products.each{| p |@clients_access.push(p.clients.uniq!}


@客户访问。扁平化

你试过很多:客户,:通过=>:产品吗?我试过jonnii,它给了我一个:源错误。。很显然,你不能将一个has\u many与一个habtm情况结合起来(至少我找不到。我建议从使用HABTM切换到使用完全连接模式。从长远来看,这会更好,而且你可以使用has\u许多:尽管我仍在学习完全连接模式,但它们是否只有在你想让你的连接成为一个模式时才有必要?如果你不需要工作,使用完全连接有什么好处吗作为模特?:)谢谢!你试过很多:客户,:通过=>:产品吗?我试过jonnii,它给了我一个:源错误。。很显然,你不能将一个has\u many与一个habtm情况结合起来(至少我找不到。我建议从使用HABTM切换到使用完全连接模式。从长远来看,这会更好,而且你可以使用has\u许多:尽管我仍在学习完全连接模式,但它们是否只有在你想让你的连接成为一个模式时才有必要?如果你不需要工作,使用完全连接有什么好处吗作为模特?:)谢谢!珍,谢谢你!这正是我所需要的,而且比我下面的技巧更好地使用代码珍,谢谢你!这正是我所需要的,而且比我下面的技巧更好地使用代码