我有一个对象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但是,
我正在使用Rails4并尝试实现一个Notif模型,该模型应该有一组已经看到它的用户。我的想法是使用has_many关系(notifhas_many:users),我将看到通知的用户添加到users。我遇到的当前问题是我无法调用@notif.users因为它声明columnusers.notif_iddoesnotexist因为我没有使用属于。一种解决方案是使用多对多关系;但是,我想避免为每个查看通知的用户创建单独的关联(试图节省数据库空间)。有没有一种方法可以在没有has_many关系的情况下有效地拥有users字段?我想我只是想在我的notif模型中存储一组用户ID。
我目前有一个应用程序Rails3.0.9,具有非常简单的多对多关系:classUser"users_stores"end我到处都弹出以下警告:弃用警告:在has_and_belongs_to_many关联的连接表上添加附加属性已弃用,并将在Rails3.1中删除。请改用has_many:through关联。问题是,我在连接表上没有任何额外的属性:sqlite>.schemausers_storesCREATETABLE"users_stores"("user_id"integer,"store_id"integer);has_and_belongs_to_many是否在Rails3.1