私がhas_many結合を持っていて、外部モデルにbelongs_toがない場合、結合が一方向である場合、実際には外部キーは必要ないことに気づきました。
に渡すことができるIDのマーシャリングされた配列を格納する列category_idsを持つことができますfind
。
したがって、これはテストされていない例です。
class page < AR
def categories
Category.find(self.category_ids)
end
def categories<<(category)
# get id and append to category_ids
save!
end
def category_ids
@cat_ids ||= Marshal.load(read_attribute(:category_ids)) rescue []
end
def category_ids=(ids)
@cat_ids = ids
write_attribute(:category_ids, ids)
end
end
page.category_ids => [1,4,12,3]page.categories=>カテゴリの配列
これについてはすでに受け入れられているパターンはありますか?それは一般的ですか、それとも努力する価値がありませんか?