gpt4 book ai didi

ruby-on-rails - 使用 has_many 的集合,:through relationships

转载 作者:行者123 更新时间:2023-12-04 06:27:53 24 4
gpt4 key购买 nike

我希望当前用户阅读和购买他所属的俱乐部中的帖子。我很想做类似下面的事情,但我读过或尝试过的任何东西都没有点击过。我将使用许多这种类型的嵌套集合,我被卡住了!

模型

    class User < ActiveRecord::Base
has_many :memberships
has_many :clubs, :through => :memberships
has_many :products

class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :club

class Club < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
has_many :events

class Event < ActiveRecord::Base
belongs_to :club

class Product < ActiveRecord::Base
belongs_to :user
has_many :posts

class Post < ActiveRecord::Base
belongs_to :product
belongs_to :event

帖子管理员

def index
@user = current_user
@posts_in_my_clubs = @user.memberships.collect { |a| a.products.posts}

posts/index.html.erb

@posts_in_my_clubs do |post|

给我错误:

undefined method `memberships' for nil:NilClass

对此我并不感到惊讶。此外,我希望能够仅选择仅在特定事件等情况下出现的帖子。

模型总结:俱乐部有很多事件和用户。用户有许多产品,他们可以在不同的事件日期向其发布数量以进行销售。只有俱乐部成员的用户才能在俱乐部中发帖或查看帖子。

我没有在模型中重复数据,而是建立了关联,这似乎使得在 ActiveRecord 中创建集合时无法访问数据。我在研究中发现 Association Join Models , 和 Intelligent association mapping与元处。这些链接让我觉得我越来越接近了。

编辑

我已登录并可以访问我需要的所有数据,只要我不尝试进行此类收集即可。例如,我可以通过

检查我是否是俱乐部的成员
def member?(club) 
return !!self.clubs.find(club)

我是菜鸟,所以我一定遗漏了一些明显的东西。我需要将我的收藏分成几个步骤吗?即收集用户俱乐部,收集用户俱乐部产品,收集用户俱乐部产品帖子...谢谢

记录器信息

    @user = current_user
logger.info @user
logger.info 'super secret message'
# @club_posts = @user.memberships.collect {|a| a.product.posts}

返回

#<User:0x5b202a0>
super secret message

当我删除评论时,我再次收到“产品”的零错误(进步!)。我确实以为我之前登录过..不过已经晚了

最佳答案

该错误消息表示 current_usernil。您确定您的身份验证系统正常工作吗?

关于ruby-on-rails - 使用 has_many 的集合,:through relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com