Tag: 属于

Rails belongs_to关联,在集合的一部分时无法访问所有者的属性?

我有一个对象,球,属于一个女孩,可以有很多球。 一切都有效,但如果我尝试通过以下方式打印出女孩的名字: @balls.each do |b| b.girl.name end 我收到以下错误: “undefined method `name’ for nil:NilClass” 这让我很困惑。 如果我说b.girl.class,我把它作为Girl的一个实例,就好了。 也就是说,它不是“NillClass”。 不仅如此,如果我只是尝试任何球,并说 @ball.girl.name 我很好。 什么是关于一系列让我搞砸的球? 编辑: 具体来说,这种情况发生在我看来。 我现在正在测试,看它是否也发生在控制器中。

Rails多个belongs_to赋值

特定 用户: class User < ActiveRecord::Base has_many :discussions has_many :posts end 讨论: class Discussion < ActiveRecord::Base belongs_to :user has_many :posts end post: class Post < ActiveRecord::Base belongs_to :user belongs_to :discussion end 我目前正在控制器中初始化post @post = current_user.posts.build(params[:post]) 我的问题是,如何设置/保存/编辑@post模型,以便设置post和讨论之间的关系?

有没有办法将资源的属性解析延迟到“执行”阶段?

我有两个LWRP。 第一部分涉及创建磁盘卷,格式化它并将其安装在虚拟机上,我们将此资源cloud_volume 。 第二个资源(它的作用并不重要)需要一个UUID用于新格式化的卷,这是一个必需的属性,我们将这个资源称为foobar 。 资源cloud_volume和foobar用于如下的配方中。 volumes.each do |mount_point, volume| cloud_volume “#{mount_point}” do size volume[‘size’] label volume[‘label’] action [:create, :initialize] end foobar “#{mount_point}” do disk_uuid node[:volumes][mount_point][:uuid] # This is set by cloud_volume action [:do_stuff] end end 所以,当我做一个厨师运行时,我得到一个Required argument disk_identifier is missing! 例外。 在做了一些挖掘之后,我发现配方分两个阶段进行处理,即编译阶段和执行阶段。 看起来问题是在编译时,因为这是node[:volumes][mount_point][:uuid]未设置的时间点。 不幸的是,我不能使用OpsCode在这里的技巧,因为通知正在cloud_volume LWRP中使用(因此它将落入文档中显示的反模式) 所以,经过这一切,我的问题是,有没有办法解决在编译时知道disk_uuid值的要求?

2个用户之间的产品订单

我有三个模型:用户,产品,优惠以及这些模型之间关系的问题。 场景: 用户1发布产品 用户2可以向用户1发送价格为10美元的报价 用户1可以接受或拒绝该优惠 我现在的问题是: 用户,产品和优惠之间的正确关系是什么? 我该如何处理这些“接受或拒绝”的行为? 可能有更好的解决方案吗? 用户模型: class User :products end 产品型号: class Product :users end 优惠型号: class Offer < ActiveRecord::Base attr_accessible :offer_price, :status, :user_id, :product_id has_many :products has_many :users, through: :products end 提前致谢 :) 编辑: 我正在使用Rails 3.2.8