草庐IT

has_only_move_member

全部标签

ruby-on-rails - Thinking sphinx - 带条件连接的索引 (has_and_belongs_to_many)

我有模型Service,它具有按服务类型ID过滤服务的范围:classServiceids{joins(:service_types).where('service_types_services.service_type_idin(?)',ids)}endclassServiceType所以,当我运行scope时,我得到这样的结果:Service.by_service_types([54])ServiceLoad(0.8ms)SELECT"services".*FROM"services"INNERJOIN"service_types_services"ON"service_types

ruby-on-rails - rails 3 : Update counter_cache only if published

这是一个棘手的问题。我有一个包含多种内容类型的项目,例如文章、评论等。每种内容类型都有评论,评论是多态的,因为它们可以属于任何内容类型。我想在我的所有内容页面上放置一个评论总数计数器以显示有多少评论,并且我实现了一个计数器缓存来执行此操作。(@article.comments.count之类的查询更多,并且由于我将Ancestrygem用于线程评论,因此子评论不计入该数字,仅计入根评论。)计数器缓存运行良好并显示评论的准确数量,但一如既往地有一个小问题。评论并不总是立即发布,只有注册用户才能立即发布,并且这些评论的:status为“2”。未注册用户进入审核队列;这些评论的:status

ruby - 在 ruby​​ Selenium 中移动鼠标(move_to)

我正在尝试使用Ruby中的SeleniumWebDriver2.4模拟鼠标移动如果我运行测试,是否应该看到鼠标在我的屏幕上移动?我很困惑。我试过很多不同的方法示例代码:require'selenium-webdriver'driver=Selenium::WebDriver.for:firefoxdriver.navigate.to'http://www.google.com'element=driver.find_element(:id,'gbqfba')那我试过了driver.action.move_to(element).performdriver.mouse.move_to(e

ruby - 为什么在 IRB 中使用 Refinement 时得到 "main.using is permitted only at toplevel"?

我尝试在IRB(v0.9.6,Ruby2.3.0)中使用Refinement:moduleFoorefineObjectdodeffoo()"foo"endendendusingFoo#=>RuntimeError:main.usingispermittedonlyattoplevel这基本上是theexactsetupfromthedocumentation(这会导致相同的错误)。出了什么问题?我该如何解决这个问题? 最佳答案 这可能是IRb的错误或功能不当。众所周知,由于IRb的实现方式非常骇人听闻,因此它无法在所有极端情况下正

ruby - 错误 : Cookbook loaded at path(s) has invalid metadata

当我运行时::$vagrantprovision或:$vagrantup我有一个错误:nisevi@localhostprocessor(master):$vagrantprovisionUsingsshdeploykeyof:/home/nisevi/.ssh/id_rsa==>default:Chef12.0.3Omnibuspackageisalreadyinstalled.==>default:Runningprovisioner:shell...default:Running:inlinescript==>default:W==>default::==>default:Dup

ruby-on-rails - FactoryGirl错误: "Email has already been taken."

使用下面的工厂时出现错误(如下所示)。它可以通过运行rakedb:test:prepare暂时修复,但是,这只会修复一次运行的测试。我可以做些什么来获得更永久的修复?我应该使用database_cleaner吗?如果是这样,任何人都可以提供有关设置的任何见解(我正在使用RSpec、Capybara、Rails4、Ruby2)吗?谢谢!我正在使用以下工厂:FactoryGirl.definedofactory:userdosequence(:username){|n|"Person#{n}"}sequence(:email){|n|"person_#{n}@example.com"}pa

ruby-on-rails - rails : has_many through not returning correctly with namespaced models

我有3个模型。Rom::Favorite,Rom::Card,User。我在创建Userhas_manyrom_cardsthroughrom_favorites时遇到问题这是我模型的相关部分Rom::CardclassRom::Card用户classUserRom::收藏classRom::Favorite{:scope=>:user_id}self.table_name="rom_favorites"end除了之外,关联的所有实用方法都有效a=User.find(1)a.rom_cards调用a.rom_cards返回一个空数组,它似乎运行了这个SQL查询SELECT"rom_fa

ruby-on-rails - 在 Rails 3 中将现有的 has_many 关系更改为多态

我在两个模型之间有一个现有的has_many关系-称它们为“汽车”和“乘客”-在我的生产环境中有几千个“乘客”属于几百个“卡片”。我正在添加另一个模型,称之为“火车”,我想将汽车和乘客之间现有的has_many关系更改为多态关系,将每位乘客与汽车或火车相关联。我的迁移应该是什么样的?我想在迁移时保留数据库中的现有关系,所以我宁愿进行一些表重命名,而不是删除一列以将其替换为另一列。此外,我希望能够在不打开服务器控制台并手动编辑所有记录的情况下执行此操作,这样当我将更改推送到生产环境时,我可以一次性迁移整个数据库。有什么建议吗?TL;DR:如何使用新模型将现有的has_many关系更改为多

ruby-on-rails - :autosave property of has_many associations broken in Rails 2. 3.4?

在我将此作为错误发布给Rails团队之前,我想看看我是否做错了可能导致此行为的事情。具体来说,has_many关联的:autosave属性似乎没有按照文档工作。作为引用,这里是最新的API文档:http://api.rubyonrails.org/classes/Acti...ation.html查看“一对多示例”部分。我已经在测试应用程序中完全复制了代码,但它对我不起作用。具体来说,更新父对象,但不更新子对象。我的架构如下:create_table:postsdo|t|t.string:titlet.timestampsendcreate_table:commentsdo|t|t.t

ruby-on-rails - 使用 FactoryGirl 验证 has_many 关联至少有一个模型

抛开关于是否应该测试模型关联是否存在的争论,我有一个名为Order的模型,我正在验证它至少有一个item在其has_many关联中使用:classOrder我已将FactoryGirl设置为检查我的工厂(检查有效性)。所以我的订单工厂是无效的,除非我为其has_many集合创建一个项目。我的订单工厂看起来像这样:FactoryGirl.definedofactory:orderdoignoredoitems_count1endafter(:build)do|order,evaluator|create_list(:item,evaluator.items_count,order:ord