多表之间,多对多关系的处理。
有三张表,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