我有类似的东西:
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
?
答案 0 :(得分: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