为2个型号添加国家/州/地区

时间:2014-12-14 19:54:41

标签: ruby-on-rails

假设我有2个型号:用户和帖子。

User has_many Posts
Post belongs_to User

将Country +州/地区添加到用户/帖子的最佳方式是什么?

因此,我希望用户默认只查看其州/地区的帖子。但如果他们想要,他们可以切换到所有帖子列表。

我看过railscast 88. Rb在国家和地区使用2个scv,在国家/地区使用2个模型。

我还检查了carmen,countries,country_select宝石,但我唯一能做的就是分配和diplay县(不是地区)。

1 个答案:

答案 0 :(得分:0)

我会保持其可读性,而不是粘贴实际代码。

  1. 创建国家/地区模型。

  2. 创建州(或地区)模型。

  3. 国家属于国家 国家有很多州

    1. 将state_id列添加到User和Post。然后:
    2. 用户属于国家#相同的邮政模型并添加用户has_one国家/属于国家/地区

      以下内容可能会有用:

      州有很多用户#相同的帖子 国家/地区有许多用户通过州#相同的帖子

      1. 在用户中为区域帖子添加关联:
      2. 用户有许多regional_posts#,条件如posts.state_id = users.state_id;你还需要传递类名

        用户有许多national_posts#,其条件类似于以下lambda:

        lambda do # in user model
          state_ids = self.country.states.pluck(:id)
          where(posts: {state_id: state_ids})
        end # again, you'll need to specify the posts model class
        

        然后user.posts将获取所有帖子,而user.regional_posts将仅获取该地区的帖子,而national_posts将获取同一国家/地区的帖子。

        如果有帮助,请将我的标记作为答案。感谢。