0

私はこれに似たものを持っています:

class Bucket < ActiveRecord::Base
  serialize :droplets, Array #of IDs
end

class Droplet < ActiveRecord::Base
  #...
end

単一のDropletものが複数のものに属することができるのでBucket(実際の問​​題はもう少し複雑です)、次のようなものを達成するための「レールウェイ」はありますか?

#in some action
@bucket = Bucket.find(47)
@droplets = Droplet.find_all_by_id(@bucket.droplets)

Bucket#droplets配列のすべての要素がどこにあるかにアクセスできるようにDroplet

4

1 に答える 1

1

多対多の関係が必要なようです。3つのテーブルでこれを行うことを強くお勧めします。これが必要ない場合は、配列をSQLに保持する必要があります。その場合、一部のRails機能が失われ、自分で説明したとおりに実行する必要があります。

@bucket = Bucket.find(47)
@droplets = Droplet.find_all_by_id(@bucket.droplets)

よりクリーンな方法で実行したい場合は、次のようにします。

class Bucket < ActiveRecord::Base
  has_and_belongs_to_many :droplets
end

class Droplet < ActiveRecord::Base
  has_and_belongs_to_many :buckets
end

移行が必要になります:

# in migration
def change
  create_table 'buckets_droplets', :id => false do |t|
    t.column :bucket_id, :integer
    t.column :droplet_id, :integer
  end
end
于 2013-01-19T22:38:19.917 に答える