Tag: 多对多

添加和删​​除has_many:through关系

从Rails协会指南中,他们使用has_many演示了多对多关系:通过如下: class Physician :appointments end class Appointment < ActiveRecord::Base belongs_to :physician belongs_to :patient end class Patient :appointments end 我如何创建和删除约会? 如果我有一个@physician ,我是否可以编写类似下面的内容来创建约会? @patient = @physician.patients.new params[:patient] @physician.patients << @patient @patient.save # Is this line needed? 删除或销毁代码怎么样? 此外,如果在约会表中不再存在患者,它是否会被销毁?

Rails:如何对多对多关系进行排序

我在模型User和Picture之间有多对多的关系。 它们通过名为Picturization的连接表链接。 如果我获得单个图片的用户列表,即picture.users – >如何确保获得的结果通过创建Picturization行(即图片与用户关联的顺序)进行排序。 如果我想按修改顺序获得这个,这将如何改变? 谢谢! 编辑也许像 picture.users.where(:order => “created_at”) 但是这个created_at引用了picturization中的created_at

如何使用太阳黑子设置具有多对多关系的方面搜索?

我之前没有实现过搜索function,感觉有些卡住了。 我有一个太阳黑子搜索function,可以根据关键字查找结果 – 这很有效 – 但我现在想要实现多选择方面function,但我似乎无法弄清楚如何设置基本方面搜索。 我有很多关系(在轨道中不在现实生活中): Class People has_many:技能,:through =>经验(反之亦然等) Class People experience searchable do text :first_name, :surname end end 在控制器中 @search = Sunspot.search(People) facet :skill_ids end 这是我无法工作的基本示例。 它会生成此错误: Sunspot::UnrecognizedFieldError: No field configured for People with name ‘skill_ids’ 如何创建指向:skill_ids的链接 我想我必须在模型中遗漏一些参考 – 但我找不到的例子确实引用了关系的ID。 我发现的大多数示例在使用构面function时都使用了该模型中已有的列。 如何使基本实现工作? 我如何在视图中使用它 – 我是否必须调用hits.facet并迭代技能? 显示此代码的代码是什么样的? 如何选择多个方面进行搜索? 我应该把它放在社区维基中吗? 感谢您的时间!

Rails 3多对多查询条件

我正在尝试在rails 3中做一个简单的Post / Tags关系。一切正常,除非我想查询与几个标签相关的post。 基本上我想做这样的事情: Post.joins(:tags).where(‘tags.name ILIKE ?’, var) 但是我不想只使用一个var,而是想使用一个数组。 我试过了 : Post.joins(:tags).where(‘tags.name IN (?)’, names_array) 但不幸的是,它做了一个简单的LIKE(不是ILIKE),并且像OR条件一样,听起来很合乎逻辑。 我还在这篇文章中使用find_by_sql找到了另一个解决方案http://snippets.dzone.com/posts/show/32 但对我来说似乎有点难看。 为了更好地理解这个问题。 我有3个post:PostA PostB PostC PostA与TagA TagB和TagC标签相关。 PostB与TagA和TagB标签相关。 PostC仅与TagA有关。 如果我查找TagA和TagCpost,我想找到PostA,因为它与两个标签有关。 使用哈希条件返回PostA PostB和PostC。 我想要的是与“至少”所有指定标签相关的post。 所以任何人都有更好的方法来处理这个问题? 谢谢。

Rails 5 – 对象关系阻碍以及如何构造多个inheritance的类/表

编辑我已经从原版编辑了这个,以便更容易理解。 我理解对象关系阻抗问题。 我理解Rails STI和多态(Rails方式,它不是真正的OO多态)。 我已经阅读了一大堆关于此的博客和问题,但仍无法找到这个问题的答案。 class Person < ApplicationRecord (ie what was ActiveRecord::Base) end class Employee < Person end class Customer < Person end ……多种其他类型的人 现在让我们说’客户’要求扩展系统,并创建一些新东西。 我们称之为项目,我们可以为其分配员工: 好的,让我们使用第三范式创建多对多: class Project < ApplicationRecord has_many :assignments has_many :employees, through: :assignments end class Employee < Person has_many :assignments has_many :projects, through: :assignments end class Assignment < ApplicationRecord belongs_to […]

需要另一个特定模型的多对多关系

我通过Supply – 和Origin -models在超市 , 产品和品牌之间建立了多对多的关系。 我还想在我的超市里存储我所拥有的特定产品品牌组合。 我想到了另一个模型(我称之为Specific_Combination ,我将存储:supermarket_id , :product_id和:brand_id 。 class Supermarket :supplies end class Supply < ActiveRecord::Base belongs_to :product belongs_to :supermarket end class Product :supplies has_many :origins has_many :brands, :through => :origins end class Origin < ActiveRecord::Base belongs_to :products belongs_to :brands end class Brand :origins end 现在,我认为可以用来存储特定产品品牌组合的课程 class Specific_Combination < ActiveRecord::Base # […]

有和属于许多错误 – * _development.hunts_tasks’不存在:

所以我正在开展一个项目,其中有一些任务组成了寻宝者。 因此,当用户点击特定的搜索时,我希望show.html.erb文件显示搜索以及与该搜索相关的任务。 两个模型(Hunt.rb和Task.rb)彼此之间具有“has_and_belongs_to_many”关系。 我的控制器最初有这个代码,但它显示了数据库中的每个任务,而不仅仅是与特定搜索相关的任务。 def show @hunt = Hunt.find(params[:id]) @title = @hunt.name @tasks = Task.paginate(:page => params[:page]) end 所以我尝试了这个。 def show @hunt = Hunt.find(params[:id]) @title = @hunt.name @tasks = @hunt.tasks.paginate(:page => params[:page]) end 但后来它抛出了这个错误: ActiveRecord::StatementInvalid in Hunts#show Showing /****/views/hunts/show.html.erb where line #10 raised: Mysql2::Error: Table ‘***_development.hunts_tasks’ doesn’t exist: SELECT `tasks`.* FROM `tasks` INNER JOIN `hunts_tasks` […]

has_many:通过多个has_one关系?

我正在为我们的铁路教堂写一个导师计划(我仍然很喜欢铁路)。 我需要对此进行建模.. contact has_one :father, :class_name => “Contact” has_one :mother, :class_name => “Contact” has_many :children, :class_name => “Contact” has_many :siblings, :through , :source => :children 所以基本上一个对象“兄弟姐妹”需要映射父亲和母亲的所有孩子,不包括对象本身。 这可能吗? 谢谢 丹尼尔

many-to-many:has_many:通过关联表单与分配给链接模型的数据创建表单视图

我正在玩Rails指南中的一个例子: http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association 此示例具有以下模型设置: class Physician :appointments end class Appointment < ActiveRecord::Base belongs_to :physician belongs_to :patient end class Patient :appointments end 我试图了解如何做以下两件事: 如何设置创建新患者的视图,并为具有指定时间的现有医生分配约会 如何为现有患者分配新医师和预约时间 我经历了处理嵌套表单的RailsCasts 196和197,但我不知道它将如何应用于这种情况。 有人可以提供一个例子或指向我这方面的指南吗? 谢谢

Rails在ASP.NET MVC3中具有多个等价物

在.NETentity framework中,具有额外属性(除了ids)和/或通过单独模型将此连接表与其他属性关联的(自定义)连接表的最佳方法是什么? 在Ruby on Rails中,我们可以为连接表建立一个模型,例如: Item.rb (model) :has_many => :buyers, :through=>:invoice … Buyers.rb (model) :has_many => :items, :through=>:invoice … Invoice.rb (model) :belongs_to :item :belongs_to :buyer …. 然后我们可以使用: Item.first.buyers , Buyers.first.items和Buyer.create(:items=>Item.create(:name=>’random’))等,就像我们使用自动连接表而没有模型一样(使用has_and_belongs_to_many)。 在Visual Studio 2010的“添加关联”对话框中,如果我们选择多重性为*(多个),则无法选择连接表(带有模型)。 有没有办法手动完成?