0

我有一个嵌套表单,它为每个帖子创建了许多位置。每个位置也可以在多个帖子中使用。

例如,帖子 1 可能有 Location1、Location2 和 Location3

AND Post 2 可能有 Location1、Location4 和 Location5

我希望这些位置在帖子中的顺序与添加的顺序相同。我认为最简单的方法是在连接表(Posts_Locations)中添加一个“订单”列,但是我不确定如何:order_by在我的控制器中进行设置或定义。我应该直接使用 SQL 执行此操作吗?

有什么建议么?这是最好的方法吗?

4

1 回答 1

1

如果您使用简单的连接表和has_and_belongs_to_manyPost 和 Location ,您可能希望将 posts_locations 表本身设为模型,使用has_many :through. 这在这个 Rails 指南中有很好的描述。

额外提示:当您添加新列时,更改模型,从而将表名连接到单数,例如 PostLocation ,这将导致表名post_locations......或者可能更具描述性。另外,不要在这个字段中使用“order”这个词,因为它是 rails 和 SQL 中的关键字。也许称它为“display_order”?

然后在 PostLocation 模型中,您可以创建一个范围,甚至是定义正确顺序的默认范围。例如scope :sorted, order("display_order DESC")

我可能会问的另一个问题是:帖子的顺序是否真的与任何位置相关联,反之亦然?

于 2012-11-29T17:40:43.030 回答