草庐IT

Ruby on Rails 加入表关联

全部标签

ruby-on-rails - ActiveRecord:我可以复制关联吗?

有没有办法将一个模型的关联复制到另一个...template_model=MyModel.find(id)new_model=template_model.clonenew_model.children...这样我就可以将子项从模板复制到新模型?(实际上,此代码将子项从模板移动到新模型)。我知道我可以手动循环,但有没有更简洁的方法?谢谢 最佳答案 问题是您正在克隆模板,而不是克隆它的子项。尝试类似的东西:template_model=MyModel.find(id)new_model=template_model.clonenew_

ruby-on-rails - 如何验证属于与 Rails 关联的存在?

假设我有一个基本的Rails应用程序,它具有基本的一对多关系,其中每条评论都属于一篇文章:$railsblog$cdblog$script/generatemodelarticlename:string$script/generatemodelcommentarticle:belongs_tobody:text现在我添加代码来创建关联,但我还想确保在创建评论时,它总是有一篇文章:classArticle现在假设我想同时创建一篇带有评论的文章:$rakedb:migrate$script/console如果你这样做:>>article=Article.new=>#>>article.co

ruby - 将数组内容加入 'English list'

我喜欢加入一个数组,生成一个“英文列表”。例如['one','two','three']的结果应该是'one,2andthree'。我写了这段代码来实现的(假设数组不为空,我的情况不是这样)ifarray.length==1result=array[0]elseresult="#{array[0,array.length].join(',')}and#{array.last}"end但我想知道是否存在一些“高级”连接方法来实现这种行为?或者至少是一些更短/更好的代码? 最佳答案 这样的方法在核心Ruby中不存在。已经implemen

ruby-on-rails - ruby on rails 固定装置中的自动关联

如thisarticle中所述,我在灯具中使用自动关联。例如,如果一个区域对象有一个国家ID,我不会执行“country_id”:1,而是执行“country”:“USA”。“USA”是我的countries.yml文件中的一个标签,所以fixtures知道如何处理它。但是,这仅在您未为国家/地区对象指定ID值时才有效。所以我不能将USA的ID指定为1。但是如果我不将其指定为1,它最终会变成某个大值8974343...这有点奇怪。有没有办法让灯具自动生成不是超高的ID?....或者这样可以吗? 最佳答案 这就是您获取fixture标

ruby-on-rails - Rails belongs_to 关联(与 :class_name) returns nil

我是Rails开发的新手,遇到了一个小的关联问题。我想给一个关联起一个不同于它链接到的模型的名字。我有以下两个模型:classUser"User"#Sowecancallevent.admintoretrievetheUserwhoownsthisEventend我按如下方式构建用户:event=event.create!:title=>"NewEvent"user=User.create!:username=>"thinkswan"user.events当我进入控制台时,我收到以下信息:irb>user=User.find(1)irb>user.events=>[#]irb>even

ruby-on-rails - FactoryGirl中如何通过关联链传递参数

默认情况下,FactoryGirl会调用关联的工厂来创建它们。我可以将工厂的关联作为参数传递。但是我怎样才能传递一个应该在关联链深处使用的对象呢?例如:我有一个Post,它有一个PostsManager,它有一个属于current_user的帐户。当我执行Factory(:post)时,它会创建一个PostsManager,它会创建一个不属于(stub的)current_user的帐户。因此,在使用Post工厂的规范中,我必须这样做:account=Factory(:account,user:current_user)post_manager=Factory(:post_manager

ruby - FactoryGirl 覆盖关联对象的属性

这可能很简单,但我在任何地方都找不到示例。我有两个工厂:FactoryGirl.definedofactory:profiledousertitle"director"bio"Iamverygoodatthings"linked_in"http://my.linkedin.profile.com"website"www.mysite.com"city"London"endendFactoryGirl.definedofactory:userdo|u|u.first_name{Faker::Name.first_name}u.last_name{Faker::Name.last_name

ruby - 我如何通过换行加入

我正在阅读一个包含源代码的文件。我需要在每行前附加2个空格。这就是我正在做的。data=read_filedata.split(/\n/).collect{|l|''+l}.join('\n')但是,当我加入后,它会按字面打印\n而不是换行符。我该如何解决? 最佳答案 您需要使用双引号(")而不是单引号。因此请替换为:'\n'用这个:"\n"阅读更多相关信息here.如果您希望行尾是CRLF而不是LF,则可能需要使用\r\n(某些Windows记事本等编辑器不会看到LF换行符)。 关于r

ruby - 如何安全地加入相对 url 段?

我正在尝试找到一种将部分url路径段连接在一起的可靠方法。有没有快速的方法来做到这一点?我尝试了以下方法:putsURI::join('resource/','/edit','12?option=test')我希望:resource/edit/12?option=test但是我得到了错误:`merge':bothURIarerelative(URI::BadURIError)我过去曾为此使用过File.join(),但将文件库用于url似乎有些不对。 最佳答案 URI的api不一定很好。URI::join仅当第一个作为带有协议(pr

sql - 如何使用自定义加入 rails 来加载对象?

背景正常的rails预加载集合是这样工作的:Person.find(:all,:include=>:companies)这会生成一些执行的sqlLEFTOUTERJOINcompaniesONpeople.company_id=companies.id问题但是,我需要一个自定义连接(如果我使用find_by_sql也会出现这种情况)所以我不能使用vanilla:include=>:companies自定义join/sql将为我提供我需要的所有数据,但我如何告诉activerecord它属于关联的Company对象而不仅仅是一堆额外的行?更新我需要在联接中添加其他条件。像这样:SELEC