我有一个名为事件的模型。事件has_and_belongs_to_many:event_sub_categories和EventSubCategoryhas_and_belongs_to_many:events。我有以下操作:defindex@events=Event.where(begins_at:DateTime.now.beginning_of_day..1.week.from_now).group_by{|e|e.begins_at.beginning_of_day}.to_a.to_jsonrenderjson:@eventsend该操作完全按照需要返回数据,除了一个问题,它
我理解关系数据库、主键/外键等的概念,但是,我无法看到在我的模型中设置这些属性的实际结果。他们会生成辅助函数或类似的东西吗?或者它们只是在数据库级别工作?比如我有这两个模型(其他属性省略)classCourse我可以像这样简单地获取任何给定类(class)的所有部分:Section.where(course_id:1234)但是,我可以在根本不建立关系的情况下做到这一点。所以我的问题是:我们为什么要这样做? 最佳答案 添加这些方法可以让你做这样的事情:Section.find(5).course#此外,它还可以让您更轻松地加入查询:
我有一个对象Ball,它属于一个Girl,它可以有很多球。大多数情况下一切正常,但如果我尝试通过以下方式打印出女孩的名字:@balls.eachdo|b|b.girl.nameend我收到以下错误:"undefinedmethod`name'fornil:NilClass"这让我很困惑。如果我说b.girl.class,我将它作为Girl的一个实例获取,就好了。也就是说,它不是“NillClass”。不仅如此,如果我只是对任何Ball进行尝试,然后说@ball.girl.name我很好。是什么让我搞砸了Balls的集合?编辑:具体而言,我认为这正在发生。我现在正在做测试,看看它是否也发
这应该是一个简单的查询,但我在正确使用Rails语法时遇到了问题。我正在使用Rails4.1.1和Postgresql(9.3)。我有一个模型用户和模型公司。User有一个公司,Company有很多用户。我试图找到所有拥有5个以上用户的公司。classCompany问题类似于:Findallrecordswhichhaveacountofanassociationgreaterthanzero如果我尝试上述类似的解决方案:Company.joins(:users).group("company.id").having("count(users.id)>5")它给我一个错误:PG::Un
我有一个用户模型和一个具有has_and_belongs_to_many关系的角色模型。join表是roles_users(两列-用户和角色的PK),没有对应的模型。我想要一个方法来返回具有给定角色的所有用户。在SQL中是这样的SELECTu.idFROMrole.r,roles_usersruWHEREr.role_id=#{role.id}ANDr.role_id=ru.role_id我看到Rails的activerecord有一个find_by_sql方法,但它只期望返回一个结果。给我一个具有给定角色的用户列表的“RailsWay”是什么,例如defself.find_use
基本上,我想完成这样的事情:ClassNode'Node'has_and_belongs_to_many:children,:class_name=>'Node'end但它不起作用,而且我不完全确定执行此操作的正确方法。接下来我将尝试显式定义一个连接表并让两者都使用它:如果这是解决方案,该列会被称为“children_id”还是“child_id”? 最佳答案 ClassNode'Node',:join_table=>"parents_children",:foreign_key=>:child_id,:association_fo
我对Rails4应用程序中的has_and_belongs_to_many有疑问。设置如下:一个用户可以有多个角色一个角色可以有多个权限由于许多用户可以共享相同的角色,并且许多角色可以共享相同的权限,并且我不需要它们之间的特殊连接模型,我使用has_and_belongs_to_many来处理这两种关系。以下是模型(去除了验证):classUser连接表按照约定命名:create_table"permissions_roles"do|t|t.integer"role_id"t.integer"permission_id"endcreate_table"roles_users"do|t|
我正在尝试做一个select_tag"employee_compensation_benefits_selection",options_from_collection_for_select(@employees,"id","entity.name","1")但是entity.name不会工作抛出一个未定义的方法“entity.name”。“实体”属于另一个模型。通过entity_idclassEmployee{:maximum=>25.megabytes.to_i}end 最佳答案 您可以向您的员工添加一个可以调用的方法,例如:c
我很好奇这是如何工作的...我在相同的两个模型之间有几个has_many关系。这是一个日历应用程序,因此可以邀请用户参加事件,用户可以参加事件,并且事件属于用户,以便查看谁创建了事件。用户.rbclassUser{wherecancel:false},dependent::destroyhas_many:events,->{where"attendances.cancel"=>false},through::attendances事件.rbclassEvent{wherecancel:false},dependent::destroyhas_many:users,->{where"at
在Rails4.2中使用最新的连接方式和where子句,似乎没有一种干净的方式(使用符号......或者只是不使用字符串SQL)从单个查询连接到同一个表。例如,我们有一个用户模型,它有一个家庭地址和工作地址的引用。如果我们想要获取在印第安纳波利斯生活和工作的所有用户,构建此查询的最佳方式是什么?理想的选择是这样的:User.joins(:home_address).join(:work_address).where(home_address:{city:'Indianapolis'}).where(work_address:{city:'Indianapolis'}).count但是,