Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用的集合有多个:通过关系_Ruby On Rails_Ruby On Rails 3_Collections - Fatal编程技术网

Ruby on rails 使用的集合有多个:通过关系

Ruby on rails 使用的集合有多个:通过关系,ruby-on-rails,ruby-on-rails-3,collections,Ruby On Rails,Ruby On Rails 3,Collections,我希望当前用户阅读并购买他所在俱乐部的帖子。 我很想做下面的事情,但我读过或尝试过的东西都没有点击。我将使用许多这种类型的嵌套集合,我卡住了 型号 class User < ActiveRecord::Base has_many :memberships has_many :clubs, :through => :memberships has_many :products class Membership <

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

型号

    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
posts/index.html.erb

@posts_in_my_clubs do |post|
给我一个错误:

未定义的方法“成员身份” 零:零级

对此我并不感到惊讶。此外,我想能够选择只有在特定的事件,等职位

模式概述:俱乐部有许多活动和用户。用户有许多产品,他们可以在不同的活动日期发布数量以进行销售。只有俱乐部成员的用户才能在俱乐部中发布或查看帖子

我没有在模型中重复数据,而是建立了关联,这似乎使得在ActiveRecord中创建集合时无法访问数据。在我的研究中,我发现了metawhere。这些链接让我感觉自己越来越近了

编辑


我已经登录,可以访问我需要的所有数据,只要我不想做这样的收集。例如,我可以通过以下方式检查我是否是俱乐部的成员:

def member?(club) 
   return !!self.clubs.find(club)
我是个笨蛋,所以我肯定错过了一些明显的东西。我是否需要将我的收藏分成几个步骤?i、 收集用户俱乐部,收集用户俱乐部产品,收集用户俱乐部产品帖子。。。谢谢

Logger.info

    @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
#
超级秘密信息

当我删除注释时,我再次得到nil错误,对于'product',now(progress!)。我还以为我以前登录过。。虽然时间已经晚了,但错误消息意味着当前用户是
nil
。您确定您的身份验证系统正常工作吗?

这是我找到的解决方案,使用gem-nested\u-many\u-through,这是Rails 3.1中的标准

用户模型 订单控制器 订单指数
“订单”,:collection=>@对于我的产品,:locals=>{:order=>@order}%>

这将使用最少的代码通过关系返回深层嵌套数据。我当然希望它有效率,但至少我的理智没有受到伤害

首先解决“NilClass”错误的问题,因为您显然没有当前用户返回的用户。控制器是否在fitler之前正确验证用户身份?如果您需要用户,是否检查您在此操作中是否已验证用户身份?请再次阅读我的评论-您的
@user
变量为零。你的收藏没有问题。您的身份验证码有问题。分配
@user=current\u user
后,将
logger.info@user
放入索引中。如果它输出
nil
,那么您在
@User
变量中没有用户记录,因此收集和关系还没有问题。谢谢,日志记录将有助于调试。我正在取得进展,但我仍然无法收集超过第三级的heierarchy。这是我的新帖子,我已经登录,可以访问我需要的所有数据,只要我不想做这样的收集。例如,我可以通过def会员?(俱乐部)返回来检查我是否是俱乐部会员!!self.clubs.find(club)
#<User:0x5b202a0>
super secret message
  has_many :products, :dependent => :destroy
  has_many :orders, :dependent => :destroy
  has_many :product_posts, :through => :products, :source => :posts, :uniq => true
  has_many :food_orders, :through => :product_posts, :source => :orders, :uniq => true
 @orders_for_my_products = current_user.food_orders.all
<%= render :partial => "order", :collection => @for_my_products, :locals => {:order => @order}  %>