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} %>