Tag: 有很多

仅删除有多个关系

我有一个: has_and_belongs_to_many :friends, :join_table => “friends_peoples”. 要添加一个朋友,我会: @people.followers << @friend创建关系和新的个人资料。 现在我想删除关系,而不是个人资料。 我试过@people.friends.delete(guilty.id)但它删除了个人资料而不是关系。 任何的想法?

强制执行has_many但只有一个当前关联的“轨道方式”是什么?

我有一个简单的rails应用程序,包含模型项目和阶段。 一个项目有很多阶段,但只有阶段可以一次激活(即“当前”)。 我仍然希望其他阶段可以访问,但当前阶段应该是应用程序的主要锚点。 关于如何实现此要求的决定对我如何处理模型访问,validation和视图/表单以进行创建更新具有重要意义。 所以问题是:如何在不增加太多复杂性的情况下实现这个“has_many但只有一个当前的关联”? 主要目标是:简化当前阶段的访问+确保一次不能超过1个活动阶段。 当然,我自己也有一些想法,想出了三个选项,我想在这里提出。 任何关于为什么我应该选择一个选项而不是另一个选项(或建议更简单的解决方案)的反馈将不胜感激: 第一选择: [Project] has_many :phases [Project] has_one :current_phase, :class_name => “Phase”, :conditions => { :current => true } 缺点:我有一个用于创建项目和相应阶段的嵌套表单。 似乎没有简单的方法可以将新创建​​的一个阶段设置为活动状态 第二种选择: [Project] has an attribute “current_phase_id” [Project] has_many :phases [Project] belongs_to phase, :foreign_key => “current_phase_id” 缺点:与选项1相同,但我有另一个属性和belongs_to关联,这看起来很奇怪(为什么一个项目属于它的一个阶段?) 第三种选择: [Phase] has an attribute “active” (boolean) [Phase] scope :active, :conditions => […]

如何使用rails和mongoid通过“计数”关联来查找记录?

有了这些型号: class Week has_many :proofs end class Proof belongs_to :week end 我想做的事情如下: Week.where(:proof.count.gt => 0) 仅查找具有多个certificate的周数。 有一个答案似乎可以解决这个问题: rails rails可以过滤给定字段的关联类的数量 但是在这个例子中,由于ids与certificate一起存储,因此在周中没有诸如proof_ids之类的属性。 这不适用于例如: Week.where(:proof_ids.gt => 0) 这个查询怎么可能? 在概念上很简单,但我无法弄清楚如何用mongo或mongoid做到这一点。 同样,我想按照certificate的数量排序,例如: Week.desc(:proofs.size) 但这也行不通。 我确实意识到反缓存是我的两个具体问题的选项,但我也希望能够进行查询。 在此先感谢您的帮助。

与has_many的Simple_Form关联:通过额外字段

我有两个模型,开发人员和任务, class Developer :assignments end class Task :assignments end class Assignment < ActiveRecord::Base attr_accessible :accomplished_time, :developer_id, :estimated_time, :status, :task_id belongs_to :task belongs_to :developer end 我通过添加一个Assignment表来处理关系,所以我可以将许多开发人员添加到一个任务中,现在我也希望能够操作我添加到连接表中的其他字段,如’estimated_time’,’ completed_time’…等……我在Simple_form上得到的是` { :class => ‘form-horizontal’ } do |f| %> :check_boxes %> ‘btn-primary’ %> t(“helpers.links.cancel”)), project_sprint_path(@sprint.project_id,@sprint), :class => ‘btn’ %> ` 这只允许我选择开发人员,我希望能够在那里修改estimated_time字段。 有什么建议?

找到所有子记录都具有给定值的所有父记录(但不仅仅是一些子记录)

一个活动有很多参与者。 参与者具有“状态”字段。 class Event < ActiveRecord::Base has_many :participants end class Participant < ActiveRecord::Base belongs_to :event end 我需要找到除以下事件之外的所有事件:每个参与者都具有“现在”状态的事件。 我可以通过以下AR代码找到其中一些参与者具有“现在”状态的所有事件: Event.joins(:participants).where .not(participants: {status: ‘present’}) .select(“events.id, count(*)”) .group(“participants.event_id”) .having(“count(*) > 0”) 这就创建了SQL: SELECT events.id, participants.status as status, count(*) FROM `events` INNER JOIN `participants` ON `participants`.`event_id` = `events`.`id` WHERE (`participants`.`status` != ‘present’) GROUP BY participants.event_id HAVING count(*) > 0 […]

rails map.resources with has_many:through不起作用?

我有三个(相关)模型,指定如下: class User :posts, :source => :comments end class Post < ActiveRecord::Base belongs_to :user has_many :comments end class Comment < ActiveRecord::Base belongs_to :user belongs_to :post end 我希望能够引用具有路由的user所有comments_received – 让我们说它是批量批准所有post的评论。 (请注意,您也可以获得用户发表的评论,但用户无法对自己的post发表评论,因此通过post发表的comments不同且相互排斥) 。 从逻辑上讲,这应该适用于: map.resources :users, :has_many => [:posts, :comments, :comments_received] 这应该给我路线 user_posts_path user_comments_path user_comments_received_path 前两个工作,最后一个不工作。 我试过没有_在comments_received无济于事。 我想找一个像这样的url http://some_domain.com/users/123/comments_received 我也试过嵌套它,但也许我做错了。 在那种情况下,我认为地图将是: map.resources :users do |user| user.resources :comments […]

has_many的new,create动作示例:通过关联(嵌套)

我在http://guides.rubyonrails.org/association_basics.html#the-has_one-through-association上找到了这段代码: class Document :sections end class Section < ActiveRecord::Base belongs_to :document has_many :paragraphs end class Paragraph < ActiveRecord::Base belongs_to :section end 这正是我想要完成的,但我仍然是Rails的新手,并想知道是否有人可以向我展示所需的表格和控制器样本,以便能够为此设置创建记录? 我能够创建第一部分(文档有很多部分),但我一直在搞清楚如何实现部分有很多段落以及如何能够在三者之间进行引用。 我已经搜索了上面的例子的高低,并且真的很感激新的,创建,更新动作和相应表单的示例代码。 非常感谢提前! 更新:我非常感谢您对此的帮助,并感谢您的快速回复。 也许我需要澄清一点。 我有我的3个模型(用户,出版物,问题),它们在每个自己的视图和控制器中分开。 目标是拥有一个控制面板,登录用户可以点击链接到: a)添加/编辑/删除与个人用户相关的出版物 b)添加/编辑/删除与各个出版物相关的问题 因此,我有3个单独的表格(用户,出版物和问题)。 在我的publications_controller中,我设法: @publication = current_user.publications.build(params[:publication]) 将用户和出版物链接在一起并使用发布模型中的正确user_id字段(未在attr_accessible中列出)填充,以便工作得很好。 现在我的挑战是在出版物上添加问题,这就是我昙花一现的地方。 我有一个菜单,我可以在其中添加问题,但我不希望表单中的publication_id字段,也不在模型中的attr_accessible中。 我想通过用户使用所选出版物创建一个问题。 对不起,如果我不能解释清楚这对我来说还是一个新鲜事,也可能也是为什么我在搜索正确的术语时遇到麻烦。

Rails has_many关联计数子行

什么是有效抓取父表的所有行的“轨道方式”以及每行的子节点数? 我不想使用counter_cache因为我想根据某些时间条件运行这些计数。 陈词滥调的博客示例:文章表。 每篇文章都有0条或更多条评论。 我希望能够在过去的一小时,一天,一周内提取每篇文章的评论数量。 但是,理想情况下,我不想迭代列表并为每篇文章单独执行sql调用,也不想使用:include来预取所有数据并在应用服务器上处理它。 我想运行一个SQL语句并获得一个包含所有信息的结果集。 我知道我可以硬编码完整的SQL,也许可以使用.find并只设置:joins , :group和:conditions参数……但我想知道是否有“更好”的方式…又名“铁路方式” 提前致谢

Rails:使用Textarea:has_many关系

嘿伙计们,这里的第一个问题。 我有几个产品和用户可以将这些产品放在愿望清单上。 用户可以拥有许多愿望清单(用于不同目的)。 产品可以添加到Wishlists,但还有其他信息:您必须指定某个产品的数量。 此逻辑用于包含,其具有字段数量 。 Class Wishlist belongs_to :user # User class is irrelevant here has_many :inclusions has_many :products, :through => :inclusions end Class Product has_many :inclusions has_many :wishlists, :through => :inclusions end Class Inclusion belongs_to :product belongs_to :wishlist end 这一切都很有效,但现在是真正的问题。 愿意通过textareas编辑愿望清单。 语法很简单: 数量productname 。 所有用户都使用此语法。 例如,编辑愿望清单应如下所示: 1 Bicycle 4 Shoe 1 Telephone 提交表单时,应在幕后处理所有逻辑。 […]

Rails – 如何在数据库中存储“has_many”复选框关联?

我有表User和表Categories 。 这两个表之间的关系: 用户has_many :categories category belongs_to :user 我想在用户的(标准)编辑页面上显示带有复选框的类别列表。 当这个用户检查一些复选框时,我想保存它们,然后在下次打开页面时显示为已选中。 但是如何在视图中呈现复选框? 以及如何存储用户在数据库中检查的复选框的信息? 我的第一个想法是使用user_id和category_id创建一个类似user_categories的表,但不确定这种方法的效果如何。 现在实施这项任务的最佳方法是什么?