Tag: 关联

Rails:belongs_to vs has_one

有关轨道协会的一个新手问题。 我有一个Bug模型和一个状态模型。 状态基本上只是一个键/值对表。 在可用的select中,我会说Bug has_one Status是最有意义的。 但是,据此 内容belongs_to ContentTemplate。 回过头来看看我如何描述这个问题,你会看到它的工作原理。 通过belongs_to,表格接受外键的责任。 所以Content有一个content_template_id。 而ContentTemplate不需要任何东西。 我可以随意指出。 完成。 Bug belongs_to状态会更合适(因为Bug应该采用外键)。 在语义上,他的例子是有道理的,但是我没有。 这只是一个铁轨的怪癖,在这种情况下,它看起来很奇怪,或者我不理解的东西/做错了吗?

Rails习语避免has_many:through中的重复

在我的Rails应用程序中,我有一个标准的用户和angular色之间的多对多关系: class User < ActiveRecord::Base has_many :user_roles has_many :roles, :through => :user_roles end 我想确保用户只能分配一次任何angular色。 任何尝试插入重复应该忽略请求,不会抛出错误或导致validation失败。 我真正想要表示的是一个“集合”,插入已经存在于集合中的元素不起作用。 {1,2,3} U {1} = {1,2,3},而不是{1,1,2,3}。 我意识到我可以这样做: user.roles << role unless user.roles.include?(role) 或者通过创build一个包装方法(例如add_to_roles(role) ),但是我希望有一些惯用的方法使它通过关联自动化,这样我可以写: user.roles << role # automatically checks roles.include? 它只是为我做的工作。 这样,我不必记得检查dups或使用自定义的方法。 在我失踪的框架中有什么东西吗? 我首先想到:has_many的uniq选项可以实现,但基本上只是“select不同”。 有没有办法做到这一点声明? 如果没有,也许通过使用关联扩展? 以下是默认行为失败的一个例子: >> u = User.create 用户创build(0.6ms)INSERT INTO“users”(“name”)VALUES(NULL) =>#<用户标识:3,名称:nil> >> u.roles << Role.first angular色负载(0.5ms)SELECT […]

从JavaScript中的关联数组中获取第一项的最有效方法是什么?

我需要从JavaScript中的一个相当大的关联数组中获得第一个项目(实际上,只是第一个键)。 下面是我如何做(使用jQuery): getKey = function (data) { var firstKey; $.each(data, function (key, val) { firstKey = key; return false; }); return firstKey; }; 只是猜测,但我会说有一个更好的(阅读:更有效的)这样做的方式。 有什么build议么? 更新:感谢有见地的答案和评论! 我忘了我的JavaScript 101,其中规范说你不能保证在一个关联数组中的特定顺序。 不过有趣的是,大多数浏览器都是这样实现的。 我不希望在获得第一个键之前对数组进行sorting,但是根据我的用例,这可能是不可避免的。

如果有子logging,如何防止删除父母?

我已经浏览了Ruby on Rails指南,我似乎无法弄清楚如何防止某人删除父logging(如果有子项)。 例如。 如果我的数据库有CUSTOMERS ,每个客户可以有多个ORDERS ,我想阻止有人删除一个客户,如果它有数据库中的任何订单。 他们应该只能删除一个客户,如果没有订单。 定义模型之间的关联以执行此行为时有没有办法?

正确的testing与Rspec“协会”的方式?

我正在尝试testing以下情况: – >我有一个叫Team的模型,当它由用户创build时它才有意义。 因此,每个Team实例必须与用户相关联。 为了testing,我做了以下几点: describe Team do … it "should be associated with a user" do no_user_team = Team.new(:user => nil) no_user_team.should_not be_valid end … end 这迫使我改变团队模型为: class Team < ActiveRecord::Base # Setup accessible (or protected) attributes for your model attr_accessible :name, :user validates_presence_of :name validates_presence_of :user belongs_to :user end 这对你看来是正确的吗? 我只是担心使:用户属性可访问(批量分配)。

两个所属协会的同一模式

我有一个模型PointOfContact has_many Systems 。 从Systems方面,我想确定PointOfContact作为technical_manager或project_manager (或两者)。 虽然仍然只保留在数据库中的PointOfContact 1时间。 我的尝试如下: class System < ActiveRecord::Base belongs_to :project_manager, :class_name => 'PointOfContact' belongs_to :technical_manager, :class_name => 'PointOfContact' end class PointOfContact < ActiveRecord::Base has_many :systems end 当我运行我的规格(下面的例子),我可以正确地创buildSystem的联系点关联。 但是, PointOfContact并不知道它与系统的关联。 这是为什么? @sys = System.create @tm = PointOfContact.create @pm = PointOfContact.create @sys.project_manager = @pm @sys.technical_manager = @tm @pm.systems.should have(1).items #> expected 1 […]

在SQL Server中实现多态关联的最佳方式是什么?

我有大量的实例,我需要在我的数据库中实现某种多态关联。 我总是浪费大量的时间重新思考所有的选项。 这是我能想到的3个。 我希望有一个SQL Server的最佳做法。 这是多列方法 这是没有外键的方法 这里是基本的方法

UML聚合与关联

在这里,我还有另外一个关于聚合和关联的问题。 我想学习一些UML的基础知识,所以我开始阅读Martin Fowler的“UML蒸馏”。 我读了关于课程的两章,有一个我不能完全理解的东西我认为,那就是聚合与结合。 书中有这样的引语: 在UML之前的日子里,人们对于什么是聚合和什么是关联通常比较模糊。 无论是否模糊,他们总是与其他人不一致。 结果,许多build模者认为聚合很重要,尽pipe原因不同。 所以UML包含聚合(图5.3),但几乎没有任何语义。 正如Jim Rumbaugh所说:“把它看作一个模拟安慰剂” [Rumbaugh,UML Reference]。 我从这个引用和Stack Overflow上读到的主题可以理解,我使用这两个关系中的哪一个并不重要,它们意味着几乎相同,还是有任何情况下聚合而不是关联的使用是合理的和/或我不能改变一个到另一个而不改变一个类图的“含义”? 我是这样问的,因为这本书是从2003年开始的,有些事情在这几年可能会改变。

rails覆盖关系的默认getter(belongs_to)

所以我知道如何覆盖使用的ActiveRecord对象的属性的默认getter def custom_getter return self[:custom_getter] || some_default_value end 然而,我试图为一个属于联盟的人做同样的事情。 例如。 class Foo < AR belongs_to :bar def bar return self[:bar] || Bar.last end end class Bar < AR has_one :foo end 当我说: f = Foo.last 我想有方法f.bar返回最后一个酒吧,而不是零,如果该关联不存在。 但是这不起作用。 原因是self [:bar]总是未定义的。 这实际上是自我[:bar_id]。 我可以做一些天真的事情: def bar if self[:bar_id] return Bar.find(self[:bar_id]) else return Bar.last end end 但是,这总是会调用db调用,即使Bar已经被提取,这当然也不是很理想。 有没有人有一个洞察力,我可能有一个关系,这样的belongs_to属性只加载一次,并有一个默认值,如果没有设置。

如何通过关联使用has_many在模型上使用ActiveAdmin?

我在我的项目中使用ActiveAdmin的gem。 我有2个模型使用has_many通过关联。 数据库模式看起来和RailsGuide中的例子完全一样。 http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association has_many through association http://guides.rubyonrails.orghttp://img.dovov.comhas_many_through.png 我如何使用ActiveAdmin来… 显示每个病人在医生页面的预约date? 编辑医师页面中每个患者的预约date? 谢谢大家。 🙂