天天看點

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

繼續閱讀