Ruby中,ActiveRecord 初次使用心得(三)

多表之间,多对多关系的处理。

有三张表,product_customization_types

                  products

                  product_customization_types_products

其中,product_customization_types 和 products 表里都有属性id,这两张表之间为多对多关系。

           product_customization_types_products 表只有两列:product_customization_types_id,products_id 。

需要从表 products中取出 products_id,根据products_id,从 product_customization_types 表中对应的 product_customization_types_id 取出。

代码如下:


 

require 'rubygems'

require 'active_record'
require 'yaml'

dbconfig = YAML::load(File.open('db.yml'))
ActiveRecord::Base.establish_connection(dbconfig)

class Product < ActiveRecord::Base
  has_and_belongs_to_many :product_customization_types
  def get_data
    products = Product.find(:all, :conditions => ["sort_id is null"])
    products.each do |product|
      sort_array = []
      product_customization_types = product.product_customization_types.select("id")
      product_customization_types.each do |product_customization_type|
    sort_array << product_customization_type.id
      end
      sort_id = sort_array.join(",")
      product.update_attribute(:sort_id, sort_id)
    end
  end
end

class ProductCustomizationType < ActiveRecord::Base
  has_and_belongs_to_many :products
end


a = Product.new
a.get_data


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值