是否可以为关联使用序列化属性?



我有一个类似的东西:

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 ?

听起来你想要多对多的关系。建议使用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

相关内容

  • 没有找到相关文章

最新更新