我想为我的帖子创建一个特殊类别,这是默认的,有三个不同的功能:
所以第一点很容易实现,因此我不会在这里专注于
第二点更令人费解。我猜这样的东西应该进入我的分类模型:
before_destroy :move_dependent_posts
def move_dependent_posts
#no idea what goes here
end
与第三点相同的问题:我必须检查,如果要删除的类别的id为1,那么之后会抛出错误?
before_destroy :protect_default_category
def protect_default_category
return false if category.id(5) #won't work, of course
end
答案 0 :(得分:2)
第2点:
before_destroy :move_dependent_posts
def move_dependent_posts
default_category = Category.default_category # find default category here
posts.each { |post| post.update_attribute(:category, default_category) }
end
第3点:
before_destroy :protect_default_category
def protect_default_category
throw "Default category can't be deleted" if id == 1
end
答案 1 :(得分:1)
好吧,如果你想要的只是一个默认类别,我正在考虑像这样实现它:
class Post
def category
super || Category.default
end
end
class Category
def default
Category.find_or_create_by(name: 'Default')
end
end
category_id
列的帖子都被视为默认类别。因此,您无需担心在创建帖子或从帖子中删除类别时分配类别。Category.default
时,它都会再次被创建。所以,它实际上没有伤害,是吗?答案 2 :(得分:0)
对于第2点
before_destroy :move_dependent_posts
def move_dependent_posts
@posts = Post.where(category: "Category to be Deleted")
@posts.each { |post| post.update_attribute(:category, "Default Category") }
end