我的应用有用户,植物和植物。这是我的协会
class User
has_many: plants
has_many :plantposts, through: :plantposts
end
class Plant
has_many: plant_posts
belongs_to : user
end
我有一份活跃的植物清单,我想展示这些植物的最新(3个最大)植物柱,而不必在每个植物上进行数据库调用。
我认为使用所有活动植物的id对plantpost
表进行一次调用并将结果放入哈希值然后使用结果来构建我的网页是个好主意。
我不确定这是否是解决此问题的最佳方法,或者确切地说是如何构建对植物柱表的调用,或者最终结果显示在该位置的正确位置第二名。
答案 0 :(得分:0)
我不确定你是否犯了复制错误,或者你的实际代码中有错误,但你的类/模型定义对我来说有点奇怪。
你的意思是他们是这样的:
class User
has_many: :plant_posts
has_many: :plants
end
class PlantPosts
belongs_to: :user
belongs_to: :plant
end
class Plant
has_many: :plant_posts
belongs_to: :user
end
注意:我没有写任何presence
验证,因为我仍然不太确定您的规则是什么。
基本上这是说有些用户可以拥有植物。用户还可以为某个工厂制作plant_posts,但该工厂不必这样做。
<小时/> 无论如何,假设你有一个
active_plants
方法,它包含一个Plant
的数组:
# Query plant posts, ordered by mostly recently created, that are
# for active_plants and return the top 3
PlantPost.order(created_at: :desc).joins(:plants)
.where("plant_id = ?", [active_plants]).limit(3)