假设我有2个型号:用户和帖子。
User has_many Posts
Post belongs_to User
将Country +州/地区添加到用户/帖子的最佳方式是什么?
因此,我希望用户默认只查看其州/地区的帖子。但如果他们想要,他们可以切换到所有帖子列表。
我看过railscast 88. Rb在国家和地区使用2个scv,在国家/地区使用2个模型。
我还检查了carmen,countries,country_select宝石,但我唯一能做的就是分配和diplay县(不是地区)。
答案 0 :(得分:0)
我会保持其可读性,而不是粘贴实际代码。
创建国家/地区模型。
创建州(或地区)模型。
国家属于国家 国家有很多州
用户属于国家#相同的邮政模型并添加用户has_one国家/属于国家/地区
以下内容可能会有用:
州有很多用户#相同的帖子 国家/地区有许多用户通过州#相同的帖子
用户有许多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将获取同一国家/地区的帖子。
如果有帮助,请将我的标记作为答案。感谢。